<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.jackslab.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>http://wiki.jackslab.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Comcat</id>
		<title>Jack's Lab - 用户贡献 [zh-cn]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.jackslab.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Comcat"/>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Comcat"/>
		<updated>2026-05-06T07:49:23Z</updated>
		<subtitle>用户贡献</subtitle>
		<generator>MediaWiki 1.19.2</generator>

	<entry>
		<id>http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95</id>
		<title>近年户外活动记录</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95"/>
				<updated>2026-05-06T07:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 2026 年 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Jack Tan (BH1RBH)，曾用网络ID: comcat / 刀切馒头&lt;br /&gt;
&lt;br /&gt;
== 2019 年以前 ==&lt;br /&gt;
&lt;br /&gt;
2007 年开始一个人背着包在户外乱窜&lt;br /&gt;
&lt;br /&gt;
2009 年底投奔 lvye.org，批量探路、冬季海陀，大五台、小五台穿越扎营，夏季小五台轻装一日五台连穿，小五台重装两日四台...&lt;br /&gt;
&lt;br /&gt;
2010 始开始攀冰，每年的 12月到次年的二月，约有五、六个周末在白河冰壁下度过&lt;br /&gt;
&lt;br /&gt;
2010 夏开始攀岩，着迷且不能自已。12 年岩季始开始丰收，至岩季结束共红点 6 条 5.12 级野外线路，最高难度 5.12d&lt;br /&gt;
&lt;br /&gt;
夏季攀岩冬季攀冰的活动，逐渐固定为一种生活方式&lt;br /&gt;
&lt;br /&gt;
2010 春节独自前往位于甘肃嘉峪关的七一冰川进行冰雪训练，4 月和同伴攀登青海的岗什卡雪峰，10月攀登四川理县的半脊峰&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[小五台一日五台连穿]] 2010-06-26&lt;br /&gt;
* [[岗什卡印象]]  ---- 初试技术攀登 2010-04-04&lt;br /&gt;
* [[白河 Beginner 初试结组攀登]] 2010-09-11&lt;br /&gt;
* [[完美心情笔记]] 2010-09-23&lt;br /&gt;
* [[半脊峰攀登笔记]] 2010-10-02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不玩海拔，只玩技术，偏执过程&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
091031 - 091101 后山铺 - 豪宅 - 天仙瀑两日（卡尔松）&lt;br /&gt;
091114 柏峪 - 黄草梁 - 七座楼往返（卡尔松）&lt;br /&gt;
091121 - 091122 大五台两日（soarrow）&lt;br /&gt;
091206 人头山探路（789ijn）&lt;br /&gt;
091218 - 091219 大海陀村夜袭 - 鞍部扎营 - 西大庄科 （soarrow）&lt;br /&gt;
091220 上峪 - 四干顶 - 白龙潭（789ijn）&lt;br /&gt;
&lt;br /&gt;
100101 - 100102 小五台两日，西台往返 （约伴，老大海，风中的大海，南子，壁虎，三脚猫，soarrow，客栈）&lt;br /&gt;
100109 - 100110 珍珠湖冰面扎营（soarrow）&lt;br /&gt;
100117 小五台北二往返（贺兰月明）&lt;br /&gt;
100130 - 100131 小五台两日，北台往返（约伴，贺兰月明，boater，混沌，mallow）&lt;br /&gt;
&lt;br /&gt;
100206 - 100207 桃园仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
100217 - 100219 七一冰川 (solo, 5031/5150)&lt;br /&gt;
&lt;br /&gt;
100227 - 100228 安家庄攀冰&lt;br /&gt;
100307 安家庄攀冰&lt;br /&gt;
100313 小五台北东未遂（约伴，boater，贺兰月明，花鼎，GAGA，客栈）&lt;br /&gt;
100320 - 100321 安家庄攀冰&lt;br /&gt;
&lt;br /&gt;
100404 - 100405 岗什卡（客栈, GAGA, soarrow; 4860/5254）&lt;br /&gt;
&lt;br /&gt;
每周四晚开始抱石&lt;br /&gt;
100424 - 100425 圆台两日（soarrow）&lt;br /&gt;
100522 - 100523 海陀两日（约伴）&lt;br /&gt;
100529 大香巴拉（领队组）&lt;br /&gt;
100605 - 100606 后河海陀两日（领队组）&lt;br /&gt;
&lt;br /&gt;
100619 - 100620 白河攀岩（5.10a）&lt;br /&gt;
100626 小五台一日五台连穿（领队组）&lt;br /&gt;
100710 - 100711 小五台两日（花鼎）&lt;br /&gt;
100717 - 100718 小五台两日四台（花鼎）&lt;br /&gt;
100724 - 100725 白河攀岩（On-Sight 志愿者，传统小怪双裂缝）&lt;br /&gt;
100731 - 100801 白河攀岩（红点 mini 肉塞）&lt;br /&gt;
100806 - 100807 白河攀岩（先锋没尽头）&lt;br /&gt;
100814 - 100815 白河攀岩（红点天黑黑）&lt;br /&gt;
100822 白河攀岩（先锋 All In One）&lt;br /&gt;
100828 七道沟 - 云蒙山 - 黑龙秘径重装一日（伙同大雪，久点，河马等）&lt;br /&gt;
100829 白河攀岩（顶绳小怪，分步完成）&lt;br /&gt;
100904 - 100905 白河攀岩（红点无尽头，顶绳完攀小怪）&lt;br /&gt;
100911 白河攀岩（领攀 Beginner，与 GAGA 结组） &lt;br /&gt;
100912 白河攀岩（先锋小怪）&lt;br /&gt;
100922 白河攀岩（红点小怪）&lt;br /&gt;
100923 白河攀岩（领攀完美心情，与大雪封山结组） &lt;br /&gt;
&lt;br /&gt;
101002 - 101006 半脊峰（与客栈, GAGA 结组; 5306/5430） &lt;br /&gt;
&lt;br /&gt;
101016 - 101017 白河攀岩&lt;br /&gt;
101025 - 101028 阳朔攀岩&lt;br /&gt;
101029 - 101030 漓江徒步+水上穿越（自带皮划艇）&lt;br /&gt;
&lt;br /&gt;
101225 - 101226 桃源仙谷攀冰&lt;br /&gt;
110101 - 110103 桃源仙谷攀冰&lt;br /&gt;
110108 - 110109 桃源仙谷攀冰&lt;br /&gt;
110122 - 110123 桃源仙谷攀冰&lt;br /&gt;
110206 - 110208 桃源仙谷攀冰&lt;br /&gt;
110219 - 110220 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
110326 - 110327 白河攀岩&lt;br /&gt;
110409 - 110410 白河攀岩&lt;br /&gt;
110416 - 110417 白河攀岩&lt;br /&gt;
110423 - 110424 白河攀岩&lt;br /&gt;
110430 - 110502 郭亮攀岩&lt;br /&gt;
110507 - 110508 白河蜜蜂峡谷攀岩&lt;br /&gt;
110514 - 110515 白河NB峡谷攀岩&lt;br /&gt;
110528 - 110529 扬州 - 兴化 - 镇江&lt;br /&gt;
110604 - 110606 白河NB峡谷攀岩&lt;br /&gt;
110611 - 110612 白河攀岩&lt;br /&gt;
110618 白河老怪攀岩（疯人入院）&lt;br /&gt;
110626 白河老岩场攀岩（红点 slab）&lt;br /&gt;
110627 白河老怪攀岩（分步疯人院）&lt;br /&gt;
110702 - 110703 白河老岩场、老怪攀岩&lt;br /&gt;
110709 白河老怪攀岩&lt;br /&gt;
110813 白河老岩场攀岩（顶绳小裂缝）&lt;br /&gt;
110820 白河老怪攀岩&lt;br /&gt;
110903 白河老怪攀岩&lt;br /&gt;
110917 白河老怪攀岩&lt;br /&gt;
111001 白河小怪攀岩、划艇&lt;br /&gt;
111002 白河老怪攀岩&lt;br /&gt;
111004 - 111006 小五台西沟&lt;br /&gt;
111007 白河老怪攀岩&lt;br /&gt;
111016 白河老怪攀岩&lt;br /&gt;
111023 白河老怪攀岩&lt;br /&gt;
&lt;br /&gt;
111231 - 120101 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
120107 - 120108 桃源仙谷攀冰&lt;br /&gt;
120114 - 120115 桃源仙谷攀冰&lt;br /&gt;
120128 桃源仙谷攀冰&lt;br /&gt;
120204 - 120205 桃源仙谷攀冰&lt;br /&gt;
120211 - 120212 桃源仙谷攀冰&lt;br /&gt;
120218 安家庄结组（40m, 2Ps, WI3，一拖二，领攀）&lt;br /&gt;
&lt;br /&gt;
120331 - 120404 南京、扬州、骑行兴化千岛菜花&lt;br /&gt;
120415 - 120416 白河老怪攀岩（疯人出院，红点疯人院5.12b）&lt;br /&gt;
120421 白河老岩场攀岩（红点11抠）&lt;br /&gt;
120422 白河老岩场攀岩（红点小裂缝）&lt;br /&gt;
120501 白河 NB 峡谷攀岩（红点酒醉的探戈）&lt;br /&gt;
120505 - 120506 白河 NB 峡谷攀岩（红点死硬 5.12b）&lt;br /&gt;
120512 - 120513 白河 NB 峡谷攀岩（分步礼物）&lt;br /&gt;
120519 - 120520 白河 NB 峡谷攀岩（顶绳完攀问柳）&lt;br /&gt;
120526 - 120527 白河 NB 峡谷攀岩（红点问柳 5.12c）&lt;br /&gt;
120602 尖岩抱石&lt;br /&gt;
120603 白河老怪攀岩 (顶绳一箱啤酒）&lt;br /&gt;
120609 - 120610 白河 NB 峡谷攀岩（顶绳双生花后大雨；次日嘎总红点死硬后借绳摸了一把）&lt;br /&gt;
120616 - 120617 白河 NB 峡谷攀岩（顶绳双生花后入夜；次日顶绳完攀双生花后，尝试红点未遂）&lt;br /&gt;
120622 - 120624 白河 NB 峡谷攀岩（红点双生花之姊株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120629 登记结婚&lt;br /&gt;
&lt;br /&gt;
120714 白河 NB 峡谷攀岩（红点双生花之妹株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120818 - 120819 止锚湾海边婚礼&lt;br /&gt;
&lt;br /&gt;
120930 - 121006 贵州紫云格凸攀岩（红点 La Piscineta Cina 5.12c/7b+）&lt;br /&gt;
121215 白河云蒙峡攀冰&lt;br /&gt;
&lt;br /&gt;
130112 白河桃源仙谷攀冰&lt;br /&gt;
130119 白河桃源仙谷攀冰&lt;br /&gt;
130126 白河NB峡谷攀冰&lt;br /&gt;
130127 白河天仙瀑攀冰&lt;br /&gt;
130207 - 130217 泰国甲米攀岩&lt;br /&gt;
&lt;br /&gt;
130404 - 130406 扬州兴化南京&lt;br /&gt;
&lt;br /&gt;
130528 嘎小多和大头出生，满月后嘎小多被我们领养&lt;br /&gt;
&lt;br /&gt;
130609 - 130613 大连&lt;br /&gt;
130619 - 130629 非洲肯尼亚追野生动物 10 日&lt;br /&gt;
130720 - 130721 驼梁两日&lt;br /&gt;
&lt;br /&gt;
131001 - 131006 阳朔攀岩&lt;br /&gt;
140131 - 140205 越南Cat Ba岛攀岩&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2019 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
190601 - 190602 白河精灵谷露天剧场恢复攀岩，如履薄冰 5.10d&lt;br /&gt;
190607 - 190609 端午白河精灵谷露天剧场攀岩、NB 峡谷攀岩（绝唱 5.10b、彩虹 5.11c）&lt;br /&gt;
190615 - 190616 白河精灵谷露天剧场攀岩、小怪攀岩（志愿者 5.10a）&lt;br /&gt;
190622 - 190623 白河精灵谷露天剧场、世外桃源攀岩（别有洞天）&lt;br /&gt;
190624 大雪岩时攀岩馆开年卡&lt;br /&gt;
190627 恢复抱石， 岩时攀岩馆&lt;br /&gt;
190629 - 190630 白河精灵谷世外桃源攀岩，红点别有洞天 5.10d&lt;br /&gt;
190706 - 190707 白河精灵谷世外桃源攀岩&lt;br /&gt;
190713 - 190714 白河精灵谷世外桃源攀岩&lt;br /&gt;
190720 - 190721 白河精灵谷世外桃源攀岩&lt;br /&gt;
190727 - 190728 白河精灵谷世外桃源、NB 峡谷（死硬）攀岩&lt;br /&gt;
190808 - 190811 大连 4 日&lt;br /&gt;
190817 - 190818 白河精灵谷世外桃源攀岩，红点吃瓜群众 5.11c/d&lt;br /&gt;
190831 - 190901 白河精灵谷世外桃源攀岩，开始摸红太阳 5.12a&lt;br /&gt;
190907 - 190908 白河精灵谷世外桃源攀岩，摸红太阳&lt;br /&gt;
190913 - 190915 白河精灵谷世外桃源攀岩，尝试红点红太阳&lt;br /&gt;
190921 - 190922 白河精灵谷世外桃源、露天剧场攀岩，红点红太阳 5.12a，Flash 天生丽质 5.11a、滴水之恩 5.11a；On-Sight 春风化雨 5.11a&lt;br /&gt;
191019 白河精灵谷露天剧场攀岩，红点夜凉如水 5.11a、阳光明媚 5.11c&lt;br /&gt;
191020 白河精灵谷露天剧场攀岩，白河攀岩基金比赛交流活动，顶绳完攀露天剧场所有线路（12 条）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2020 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20200718 白河鸽壁大麻雀攀岩（摸了一把没到顶，难点没分）&lt;br /&gt;
20200725 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200801 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200808 白河鸽壁大麻雀攀岩（两把顶绳，山间流水年度最充沛）&lt;br /&gt;
20200815 白河鸽壁大麻雀攀岩（两把顶绳，山间流水还是很多，多多趴石头上听水参禅：）&lt;br /&gt;
20200822 白河鸽壁大麻雀攀岩（16时左右到岩场，爬了两把顶绳，肉老师生日，拍了一组）&lt;br /&gt;
20200830 白河鸽壁大麻雀攀岩（雨师周六有事，很晚才干到白河）&lt;br /&gt;
20200905 无攀岩，带多多从鸽壁穿越到精灵谷，世外桃源碰到大头玩了会儿（GAGA回大连，雨师牧沙去了天门山。当晚小何布达拉的分享会）&lt;br /&gt;
20200906 白河鸽壁大麻雀攀岩（快到中午和雨师去干了一把，被马蜂蛰到大臂，先锋艰难挂到顶）&lt;br /&gt;
20200912 白河鸽壁大麻雀攀岩（晨起大雨，午后放大晴，云奇美，16时左右到岩场，干了三把顶绳）&lt;br /&gt;
20200913 白河鸽壁大麻雀攀岩（11时左右到岩场，又干了两把顶绳，第一次周末连爬两天）&lt;br /&gt;
20200919 白河鸽壁大麻雀攀岩（做完多多的木床，16时左右到岩场，一把顶绳轻松无脱落到顶，有点意外，辛大王被多只马蜂攻击，战状惨烈。第二把顶绳无脱落吃力到顶）&lt;br /&gt;
20200920 白河鸽壁大麻雀攀岩（12时左右到岩场，一把先锋过了难点后右手力竭 take 了，第二把顺利完成，可惜结束动作略变形，不够从容：）&lt;br /&gt;
20201002 - 04 南京 - 兴化 - 南京&lt;br /&gt;
20201004 - 06 南京 - 大连&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2021 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
202101 白河基金管庄抱石交流活动&lt;br /&gt;
20210215 精灵谷抱石&lt;br /&gt;
20210222 精灵谷抱石&lt;br /&gt;
20210302 精灵谷抱石&lt;br /&gt;
20210315 精灵谷抱石&lt;br /&gt;
20210322 精灵谷抱石&lt;br /&gt;
20210411 精灵谷抱石&lt;br /&gt;
20210418 精灵谷抱石&lt;br /&gt;
202104 多次前往植物园&lt;br /&gt;
20210510 精灵谷抱石&lt;br /&gt;
20210724 流白水抱石&lt;br /&gt;
20210830 白河NB峡谷攀岩&lt;br /&gt;
20210913 白河NB峡谷攀岩&lt;br /&gt;
20210923 大连3日&lt;br /&gt;
10 月，多次前往植物园&lt;br /&gt;
11 月，开始搞驹遛车&lt;br /&gt;
20211129 白河老怪抱石&lt;br /&gt;
12月，搞驹遛车多次前往密云&lt;br /&gt;
20211205 国家博物馆&lt;br /&gt;
20211212 白河怀柔环线，带着贵贵遛 BMW 320LI，9.3L/100km&lt;br /&gt;
20211223 密云射电望远镜阵列环线，三口遛 Benz GLA&lt;br /&gt;
20211224 大望路平安夜抱石交流&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2022 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20220103 禅院找波波炸河虾，炫酸汤鱼&lt;br /&gt;
20220109 接上王大饼看木僵贾主任，潭柘寺王平环线遛车。。。&lt;br /&gt;
20220115 遛大弯找冰上扎营的英雄和蚂蚱，当晚车内露营，清晨车内都零下十度左右，嘎小多瑟瑟发抖&lt;br /&gt;
20220131 白河一日，冰上遛多多，禅院围炉夜话。。。&lt;br /&gt;
20220206 大觉寺一日，遛多多&lt;br /&gt;
20220213 大雪一日，冒雪温榆河遛贵贵，富贵兴奋异常&lt;br /&gt;
20220219 妙峰山涧沟环线遛多多&lt;br /&gt;
20220227 妙峰山涧沟环线遛多多&lt;br /&gt;
20220306 白河一日，精灵谷二楼找波波保护借顶绳爬了几把&lt;br /&gt;
20220313 白河一日，老怪逛逛，老怪先生爬了一把疯人院，完了隧道口看了看新石头&lt;br /&gt;
20220319 妙峰山涧沟环线遛多多，最后的春雪&lt;br /&gt;
20220326 白河老怪攀岩&lt;br /&gt;
20220403 白河赶集，老怪攀岩&lt;br /&gt;
20220409 白河老怪攀岩&lt;br /&gt;
20220416-17 白河老怪攀岩&lt;br /&gt;
20220423 白河老怪攀岩&lt;br /&gt;
20220501 白河老怪攀岩&lt;br /&gt;
20220508 白河老怪攀岩&lt;br /&gt;
20220514 白河老怪攀岩&lt;br /&gt;
20220529 四海镇环线一日&lt;br /&gt;
20220611 白河老怪攀岩&lt;br /&gt;
20220629 Weding 十周年&lt;br /&gt;
20220723-24 白河NB峡谷攀岩&lt;br /&gt;
20221015 白河牛盆峪抱石、拣柴，张家坟打水。。。&lt;br /&gt;
20221113 白河牛盆峪抱石&lt;br /&gt;
20221120 白河塔子峪抱石&lt;br /&gt;
20221126 白河董小姐抱石&lt;br /&gt;
20221204 妙峰山涧沟环线遛多多，下山水边玩了玩户外意式咖啡壶、蒸汽奶泡机，气温零度左右，低温环境体验不好啊&lt;br /&gt;
20221210 GL8 发车北灵山，没上去，路边森林里多多玩了玩雪，斋堂水库观景台汉堡晚餐，当夜嗓子干痒，次日低烧。。。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2023 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20230101 妙峰山登高&lt;br /&gt;
20230121 垡头史坦利新年包饺子&lt;br /&gt;
20230218-20 电驹大连3日&lt;br /&gt;
20230305 牛盆峪抱石&lt;br /&gt;
20230311-12 南京、兴化两日&lt;br /&gt;
20230319 牛盆峪抱石&lt;br /&gt;
20230325 牛盆峪搞钱活动，Model Y 拉垫子，带着贵贵附近转了转&lt;br /&gt;
20230331-0404 南京、兴化，提贴地飞行器回&lt;br /&gt;
20230408 白河天门山抱石&lt;br /&gt;
20230430-0502 贴地飞行大连3日，最后一个工作日早走，夜泊秦皇岛汽车园区，和贵贵睡车后，嘎嘎睡前座，还行&lt;br /&gt;
20230520 白河精灵谷世外桃源攀岩&lt;br /&gt;
20230622 白河流白水抱石，王大饼探亲&lt;br /&gt;
20230708 白河NB峡谷攀岩&lt;br /&gt;
20230715 白河NB峡谷攀岩，红点硬伤 5.13c（左肩拉伤后未完全恢复，当天爬了3、4把，天黑收工前拿下，中间休息了好久。。。）&lt;br /&gt;
20230721-22 乌兰察布两日，观云、追光、火山露营，黄花沟人品爆棚，贵贵（嘎小多多）开心异常。。。&lt;br /&gt;
20230819 白河NB峡谷攀岩&lt;br /&gt;
20230826-27 白河NB峡谷攀岩&lt;br /&gt;
20230909-10 枣庄夹谷山攀岩两日，On-Sight 小天鹅 5.12a&lt;br /&gt;
20230930-1001 白河小怪攀岩，1002 晚机场接昆明回来的韭儿&lt;br /&gt;
20231028 白河老怪攀岩，红点一箱啤酒 5.13a（左肩还是有点虚，当天爬了3把，摩擦力较上周略差，第一把热身，4进5力竭take。。。14:15 左右第三把拿下），完事和老怪先生两口子汇合，天门山抱石&lt;br /&gt;
今年就国庆以后，去了三次老怪，春天为啥没怎么去呢？&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2024 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20240206 春节带贵贵（嘎小多多）大连探亲。20240210（初一）回，大雾封路，10:00 左右上高速，0:47 WJX&lt;br /&gt;
20240211 初二南下探亲，9:40 WJX 出发。沭阳过夜。次日达。&lt;br /&gt;
20240524 南下探亲，19:38 王庆坨，23:57 泊章丘。次日 21:20 返，00:13 泊新沂。&lt;br /&gt;
&lt;br /&gt;
20240606 贵贵（嘎多小多）心包积液抢救&lt;br /&gt;
20240619 下午农大复查，当夜再次因心包积液导致心脏填塞抢救&lt;br /&gt;
20240620 上午出院回家，刚到进家门就又开始坐立不安、站立呼吸，四肢端还凉，观察约一个小时又送医院，又抽心包积液 250ml 近乎血&lt;br /&gt;
20240621 上午状态还好，见到我们还不停摇尾巴，抓门要出氧箱，复查心超，积液又回到 19 日夜里的量，医生建议输血或者手术。心超只见快速增多的积液，未见其他异常。&lt;br /&gt;
          为免控制不住的血性积液再次心脏填塞，被迫冒险开胸做心包切除尝试止血，术中发现右心房肿物，一并切除，手术前后共输 800ml 血&lt;br /&gt;
20240627 复查，催问医生快速化疗之事，答复至少等病理结果出来再说。。。&lt;br /&gt;
20240628 收到切除之心包、右心房外团块的病理结果：犬血管肉瘤 (HSA)。。。&lt;br /&gt;
20240706 永失我们的乖乖（嘎小多多），心头好像被挖走了一块肉。。。&lt;br /&gt;
&lt;br /&gt;
20240929 - 20241003 广西社更穿洞攀岩：&lt;br /&gt;
  Day1：魂在身后追10b (ON)、驯龙高手10a (ON)、神龙摆尾10c (ON)、13m 10d (ON)、全景图11b (ON)&lt;br /&gt;
  Day2：一番炸12b（挂顶前力竭冲坠）、10a (ON)&lt;br /&gt;
  Day3：开场白11b (ON)、放飞自我11d (ON)&lt;br /&gt;
  Day4：稀奇12a (ON)、清风自来12b（第5挂片take）&lt;br /&gt;
  Day5：壮士12a (又是挂顶前Take）、十三膝12c/d（第15挂片Take）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2025 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20250131 - 20250207 福州一日、罗源抱石三日，泉州一日；回程取道杭州撸 60 只哈士奇。驾特斯拉电驹南下，全程4857km&lt;br /&gt;
20250403 - 20250406 大连探亲三日，4/3 13:00 WJX 出发，22时左右夜泊北镇，扎营冻屁股。4/5 滨海路投喂活爹野生梅花鹿。4/6 6:10出发，14:30朝阳休整，检查站大堵车。 &lt;br /&gt;
20250501 - 20250504 淄博刁花峪、石马攀岩四日，梁上君子5.11b (on)、剪刀手5.11c(on)、糖醋鲤鱼5.11a(on)，山高水长5.11c (flash)&lt;br /&gt;
20250505 - 20250506 电驹淄博八陡镇出发，兴化探亲，当晚回，蒙阴附近遭遇大风大雨，夜泊莱芜北服务区&lt;br /&gt;
20250531 - 20250601 龙安攀岩两日，富春小笼5.11c (on)、鸭咩爹 5.11a (on)，Hello Kitty 5.12b（顶绳一把完攀），旅行日记 5.13b/c（顶绳 work 了两把），Yellow Gold 5.13a（顶绳 work 了一把）&lt;br /&gt;
20250607 龙安攀岩一日，鸟窝 5.12d（先锋一把、顶绳一把），旅行日记 5.13b/c（顶绳 work 了一把）&lt;br /&gt;
20250608 白河NB峡谷攀岩一日，红点太阳花 5.12c（爬了四把，大意了）&lt;br /&gt;
20250926 - 20251007 开封半日、咸宁鸣水泉攀岩 5 日（28、29、1、2、3、4）、咸宁千桥一日（30）、芜湖戴店半日（5）、兴化探亲一日（10/6 八字桥夏小虎逝年小酒馆）。全程特斯拉电驹，全程2423km。&lt;br /&gt;
20251012 白河黑石抱石，我只能奔跑 V7&lt;br /&gt;
202510 - 202511 周末老怪战斗&lt;br /&gt;
20251230 建平牛河梁半日&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20260101 - 20260102 大连探亲 2 日&lt;br /&gt;
20260213 - 20260227 春节假期 14 日&lt;br /&gt;
* 13日4:00接上大猴，下午到滨海，撸两下老葛，继续苏州探望三伯，当晚宿苏州。&lt;br /&gt;
* 次日回家。2/16 日晚启程、2/17 下午岳阳半日（岳阳楼、嗦粉） 宿岳阳。&lt;br /&gt;
* 2/18 21:00 到达桂林两江机场接上嘎小辫。&lt;br /&gt;
* 2/19 - 2/25 阳朔白山、雷劈山、思龙山攀岩，flash 多面手 5.11b。&lt;br /&gt;
* 2/25 下午直接从雷劈返程，19:30 到达机场，送别小分队，当晚泊永州。&lt;br /&gt;
* 2/26 永州零陵区 2h，8:30 交警大队充电，香零烟雨印象深刻。&lt;br /&gt;
* 2/26 夜穿大别山余脉，过信阳，宿确山县（3毛3一个的水煎包）&lt;br /&gt;
全程驾特斯拉电驹南下，总行程约 5800km&lt;br /&gt;
20260403 - 20260406 清明 3 日。&lt;br /&gt;
* 4/3 宿沭阳服务区，4/4 镇江伙头烧蟹黄汤包吃早饭，睡半日，晚武家小厨吃公橘黄。&lt;br /&gt;
* 4/5 南山攀岩一日，红点 辛拉面 5.12a、步步为营 5.11d，当晚直奔扬中，捞了两条北方橘黄付 60 加工费让老板现做，味道绝了。当晚宿兴化。&lt;br /&gt;
* 4/6 日看望完父母后，下午返。&lt;br /&gt;
20260430 - 20260506&lt;br /&gt;
* 4/30 15:30 出发，凌晨到淄博乐疃村。&lt;br /&gt;
* 5/1 - 5/2 刁花峪攀岩，每天两把&lt;br /&gt;
* 5/3 石马攀岩， 彩云之南 5.11b（红点）、恼人的小岩皮 5.10d (on)、泥泞的步伐 5.12a（顶绳一把），充完去挪车，回来阿标意犹未尽，还想再干几把，天色突变，查看彩云，预警雨马山到，赶紧下撤，赶下雨前上车。。。&lt;br /&gt;
* 5/4 兴化探亲一日&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* 内蒙太仆寺旗的石条山 [http://bowuguan.hljlr.gov.cn/kpbk/201809/t20180912_266910.htm 中国石柱群 火山岩柱状节理分布图]&lt;br /&gt;
* [https://www.parachuteshop.com/Mirage%20G4.htm MIRAGE parachute] [https://jingyan.baidu.com/article/6079ad0e94668728fe86db76.html 001][http://www.tfskydive.com/AFF.html 002][http://www.xdtsjlb.com/ 003]&lt;br /&gt;
* [https://www.rockskymarket.com/8-containers Containers]&lt;br /&gt;
* [http://www.wingsuitfly.com/ Wingsuit flying]&lt;br /&gt;
* [https://blacksheepadventuresports.com/2018/10/13/comparison-review-sub-9mm-climbing-ropes/ Sub 9mm Climbing Rope Comparison]&lt;br /&gt;
* [https://www.dailyscandinavian.com/climbing-in-the-lofoten-islands-norway/ Climbing in the Lofoten Islands, Norway] https://www.thecrag.com/climbing/norway/lofoten https://outtt.com/en/norway/lofoten/hiking https://outtt.com/en/adventures/8686/djevelporten-fl%C3%B8ya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lofoten]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95</id>
		<title>近年户外活动记录</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95"/>
				<updated>2026-05-06T07:35:40Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 2026 年 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Jack Tan (BH1RBH)，曾用网络ID: comcat / 刀切馒头&lt;br /&gt;
&lt;br /&gt;
== 2019 年以前 ==&lt;br /&gt;
&lt;br /&gt;
2007 年开始一个人背着包在户外乱窜&lt;br /&gt;
&lt;br /&gt;
2009 年底投奔 lvye.org，批量探路、冬季海陀，大五台、小五台穿越扎营，夏季小五台轻装一日五台连穿，小五台重装两日四台...&lt;br /&gt;
&lt;br /&gt;
2010 始开始攀冰，每年的 12月到次年的二月，约有五、六个周末在白河冰壁下度过&lt;br /&gt;
&lt;br /&gt;
2010 夏开始攀岩，着迷且不能自已。12 年岩季始开始丰收，至岩季结束共红点 6 条 5.12 级野外线路，最高难度 5.12d&lt;br /&gt;
&lt;br /&gt;
夏季攀岩冬季攀冰的活动，逐渐固定为一种生活方式&lt;br /&gt;
&lt;br /&gt;
2010 春节独自前往位于甘肃嘉峪关的七一冰川进行冰雪训练，4 月和同伴攀登青海的岗什卡雪峰，10月攀登四川理县的半脊峰&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[小五台一日五台连穿]] 2010-06-26&lt;br /&gt;
* [[岗什卡印象]]  ---- 初试技术攀登 2010-04-04&lt;br /&gt;
* [[白河 Beginner 初试结组攀登]] 2010-09-11&lt;br /&gt;
* [[完美心情笔记]] 2010-09-23&lt;br /&gt;
* [[半脊峰攀登笔记]] 2010-10-02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不玩海拔，只玩技术，偏执过程&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
091031 - 091101 后山铺 - 豪宅 - 天仙瀑两日（卡尔松）&lt;br /&gt;
091114 柏峪 - 黄草梁 - 七座楼往返（卡尔松）&lt;br /&gt;
091121 - 091122 大五台两日（soarrow）&lt;br /&gt;
091206 人头山探路（789ijn）&lt;br /&gt;
091218 - 091219 大海陀村夜袭 - 鞍部扎营 - 西大庄科 （soarrow）&lt;br /&gt;
091220 上峪 - 四干顶 - 白龙潭（789ijn）&lt;br /&gt;
&lt;br /&gt;
100101 - 100102 小五台两日，西台往返 （约伴，老大海，风中的大海，南子，壁虎，三脚猫，soarrow，客栈）&lt;br /&gt;
100109 - 100110 珍珠湖冰面扎营（soarrow）&lt;br /&gt;
100117 小五台北二往返（贺兰月明）&lt;br /&gt;
100130 - 100131 小五台两日，北台往返（约伴，贺兰月明，boater，混沌，mallow）&lt;br /&gt;
&lt;br /&gt;
100206 - 100207 桃园仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
100217 - 100219 七一冰川 (solo, 5031/5150)&lt;br /&gt;
&lt;br /&gt;
100227 - 100228 安家庄攀冰&lt;br /&gt;
100307 安家庄攀冰&lt;br /&gt;
100313 小五台北东未遂（约伴，boater，贺兰月明，花鼎，GAGA，客栈）&lt;br /&gt;
100320 - 100321 安家庄攀冰&lt;br /&gt;
&lt;br /&gt;
100404 - 100405 岗什卡（客栈, GAGA, soarrow; 4860/5254）&lt;br /&gt;
&lt;br /&gt;
每周四晚开始抱石&lt;br /&gt;
100424 - 100425 圆台两日（soarrow）&lt;br /&gt;
100522 - 100523 海陀两日（约伴）&lt;br /&gt;
100529 大香巴拉（领队组）&lt;br /&gt;
100605 - 100606 后河海陀两日（领队组）&lt;br /&gt;
&lt;br /&gt;
100619 - 100620 白河攀岩（5.10a）&lt;br /&gt;
100626 小五台一日五台连穿（领队组）&lt;br /&gt;
100710 - 100711 小五台两日（花鼎）&lt;br /&gt;
100717 - 100718 小五台两日四台（花鼎）&lt;br /&gt;
100724 - 100725 白河攀岩（On-Sight 志愿者，传统小怪双裂缝）&lt;br /&gt;
100731 - 100801 白河攀岩（红点 mini 肉塞）&lt;br /&gt;
100806 - 100807 白河攀岩（先锋没尽头）&lt;br /&gt;
100814 - 100815 白河攀岩（红点天黑黑）&lt;br /&gt;
100822 白河攀岩（先锋 All In One）&lt;br /&gt;
100828 七道沟 - 云蒙山 - 黑龙秘径重装一日（伙同大雪，久点，河马等）&lt;br /&gt;
100829 白河攀岩（顶绳小怪，分步完成）&lt;br /&gt;
100904 - 100905 白河攀岩（红点无尽头，顶绳完攀小怪）&lt;br /&gt;
100911 白河攀岩（领攀 Beginner，与 GAGA 结组） &lt;br /&gt;
100912 白河攀岩（先锋小怪）&lt;br /&gt;
100922 白河攀岩（红点小怪）&lt;br /&gt;
100923 白河攀岩（领攀完美心情，与大雪封山结组） &lt;br /&gt;
&lt;br /&gt;
101002 - 101006 半脊峰（与客栈, GAGA 结组; 5306/5430） &lt;br /&gt;
&lt;br /&gt;
101016 - 101017 白河攀岩&lt;br /&gt;
101025 - 101028 阳朔攀岩&lt;br /&gt;
101029 - 101030 漓江徒步+水上穿越（自带皮划艇）&lt;br /&gt;
&lt;br /&gt;
101225 - 101226 桃源仙谷攀冰&lt;br /&gt;
110101 - 110103 桃源仙谷攀冰&lt;br /&gt;
110108 - 110109 桃源仙谷攀冰&lt;br /&gt;
110122 - 110123 桃源仙谷攀冰&lt;br /&gt;
110206 - 110208 桃源仙谷攀冰&lt;br /&gt;
110219 - 110220 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
110326 - 110327 白河攀岩&lt;br /&gt;
110409 - 110410 白河攀岩&lt;br /&gt;
110416 - 110417 白河攀岩&lt;br /&gt;
110423 - 110424 白河攀岩&lt;br /&gt;
110430 - 110502 郭亮攀岩&lt;br /&gt;
110507 - 110508 白河蜜蜂峡谷攀岩&lt;br /&gt;
110514 - 110515 白河NB峡谷攀岩&lt;br /&gt;
110528 - 110529 扬州 - 兴化 - 镇江&lt;br /&gt;
110604 - 110606 白河NB峡谷攀岩&lt;br /&gt;
110611 - 110612 白河攀岩&lt;br /&gt;
110618 白河老怪攀岩（疯人入院）&lt;br /&gt;
110626 白河老岩场攀岩（红点 slab）&lt;br /&gt;
110627 白河老怪攀岩（分步疯人院）&lt;br /&gt;
110702 - 110703 白河老岩场、老怪攀岩&lt;br /&gt;
110709 白河老怪攀岩&lt;br /&gt;
110813 白河老岩场攀岩（顶绳小裂缝）&lt;br /&gt;
110820 白河老怪攀岩&lt;br /&gt;
110903 白河老怪攀岩&lt;br /&gt;
110917 白河老怪攀岩&lt;br /&gt;
111001 白河小怪攀岩、划艇&lt;br /&gt;
111002 白河老怪攀岩&lt;br /&gt;
111004 - 111006 小五台西沟&lt;br /&gt;
111007 白河老怪攀岩&lt;br /&gt;
111016 白河老怪攀岩&lt;br /&gt;
111023 白河老怪攀岩&lt;br /&gt;
&lt;br /&gt;
111231 - 120101 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
120107 - 120108 桃源仙谷攀冰&lt;br /&gt;
120114 - 120115 桃源仙谷攀冰&lt;br /&gt;
120128 桃源仙谷攀冰&lt;br /&gt;
120204 - 120205 桃源仙谷攀冰&lt;br /&gt;
120211 - 120212 桃源仙谷攀冰&lt;br /&gt;
120218 安家庄结组（40m, 2Ps, WI3，一拖二，领攀）&lt;br /&gt;
&lt;br /&gt;
120331 - 120404 南京、扬州、骑行兴化千岛菜花&lt;br /&gt;
120415 - 120416 白河老怪攀岩（疯人出院，红点疯人院5.12b）&lt;br /&gt;
120421 白河老岩场攀岩（红点11抠）&lt;br /&gt;
120422 白河老岩场攀岩（红点小裂缝）&lt;br /&gt;
120501 白河 NB 峡谷攀岩（红点酒醉的探戈）&lt;br /&gt;
120505 - 120506 白河 NB 峡谷攀岩（红点死硬 5.12b）&lt;br /&gt;
120512 - 120513 白河 NB 峡谷攀岩（分步礼物）&lt;br /&gt;
120519 - 120520 白河 NB 峡谷攀岩（顶绳完攀问柳）&lt;br /&gt;
120526 - 120527 白河 NB 峡谷攀岩（红点问柳 5.12c）&lt;br /&gt;
120602 尖岩抱石&lt;br /&gt;
120603 白河老怪攀岩 (顶绳一箱啤酒）&lt;br /&gt;
120609 - 120610 白河 NB 峡谷攀岩（顶绳双生花后大雨；次日嘎总红点死硬后借绳摸了一把）&lt;br /&gt;
120616 - 120617 白河 NB 峡谷攀岩（顶绳双生花后入夜；次日顶绳完攀双生花后，尝试红点未遂）&lt;br /&gt;
120622 - 120624 白河 NB 峡谷攀岩（红点双生花之姊株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120629 登记结婚&lt;br /&gt;
&lt;br /&gt;
120714 白河 NB 峡谷攀岩（红点双生花之妹株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120818 - 120819 止锚湾海边婚礼&lt;br /&gt;
&lt;br /&gt;
120930 - 121006 贵州紫云格凸攀岩（红点 La Piscineta Cina 5.12c/7b+）&lt;br /&gt;
121215 白河云蒙峡攀冰&lt;br /&gt;
&lt;br /&gt;
130112 白河桃源仙谷攀冰&lt;br /&gt;
130119 白河桃源仙谷攀冰&lt;br /&gt;
130126 白河NB峡谷攀冰&lt;br /&gt;
130127 白河天仙瀑攀冰&lt;br /&gt;
130207 - 130217 泰国甲米攀岩&lt;br /&gt;
&lt;br /&gt;
130404 - 130406 扬州兴化南京&lt;br /&gt;
&lt;br /&gt;
130528 嘎小多和大头出生，满月后嘎小多被我们领养&lt;br /&gt;
&lt;br /&gt;
130609 - 130613 大连&lt;br /&gt;
130619 - 130629 非洲肯尼亚追野生动物 10 日&lt;br /&gt;
130720 - 130721 驼梁两日&lt;br /&gt;
&lt;br /&gt;
131001 - 131006 阳朔攀岩&lt;br /&gt;
140131 - 140205 越南Cat Ba岛攀岩&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2019 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
190601 - 190602 白河精灵谷露天剧场恢复攀岩，如履薄冰 5.10d&lt;br /&gt;
190607 - 190609 端午白河精灵谷露天剧场攀岩、NB 峡谷攀岩（绝唱 5.10b、彩虹 5.11c）&lt;br /&gt;
190615 - 190616 白河精灵谷露天剧场攀岩、小怪攀岩（志愿者 5.10a）&lt;br /&gt;
190622 - 190623 白河精灵谷露天剧场、世外桃源攀岩（别有洞天）&lt;br /&gt;
190624 大雪岩时攀岩馆开年卡&lt;br /&gt;
190627 恢复抱石， 岩时攀岩馆&lt;br /&gt;
190629 - 190630 白河精灵谷世外桃源攀岩，红点别有洞天 5.10d&lt;br /&gt;
190706 - 190707 白河精灵谷世外桃源攀岩&lt;br /&gt;
190713 - 190714 白河精灵谷世外桃源攀岩&lt;br /&gt;
190720 - 190721 白河精灵谷世外桃源攀岩&lt;br /&gt;
190727 - 190728 白河精灵谷世外桃源、NB 峡谷（死硬）攀岩&lt;br /&gt;
190808 - 190811 大连 4 日&lt;br /&gt;
190817 - 190818 白河精灵谷世外桃源攀岩，红点吃瓜群众 5.11c/d&lt;br /&gt;
190831 - 190901 白河精灵谷世外桃源攀岩，开始摸红太阳 5.12a&lt;br /&gt;
190907 - 190908 白河精灵谷世外桃源攀岩，摸红太阳&lt;br /&gt;
190913 - 190915 白河精灵谷世外桃源攀岩，尝试红点红太阳&lt;br /&gt;
190921 - 190922 白河精灵谷世外桃源、露天剧场攀岩，红点红太阳 5.12a，Flash 天生丽质 5.11a、滴水之恩 5.11a；On-Sight 春风化雨 5.11a&lt;br /&gt;
191019 白河精灵谷露天剧场攀岩，红点夜凉如水 5.11a、阳光明媚 5.11c&lt;br /&gt;
191020 白河精灵谷露天剧场攀岩，白河攀岩基金比赛交流活动，顶绳完攀露天剧场所有线路（12 条）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2020 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20200718 白河鸽壁大麻雀攀岩（摸了一把没到顶，难点没分）&lt;br /&gt;
20200725 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200801 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200808 白河鸽壁大麻雀攀岩（两把顶绳，山间流水年度最充沛）&lt;br /&gt;
20200815 白河鸽壁大麻雀攀岩（两把顶绳，山间流水还是很多，多多趴石头上听水参禅：）&lt;br /&gt;
20200822 白河鸽壁大麻雀攀岩（16时左右到岩场，爬了两把顶绳，肉老师生日，拍了一组）&lt;br /&gt;
20200830 白河鸽壁大麻雀攀岩（雨师周六有事，很晚才干到白河）&lt;br /&gt;
20200905 无攀岩，带多多从鸽壁穿越到精灵谷，世外桃源碰到大头玩了会儿（GAGA回大连，雨师牧沙去了天门山。当晚小何布达拉的分享会）&lt;br /&gt;
20200906 白河鸽壁大麻雀攀岩（快到中午和雨师去干了一把，被马蜂蛰到大臂，先锋艰难挂到顶）&lt;br /&gt;
20200912 白河鸽壁大麻雀攀岩（晨起大雨，午后放大晴，云奇美，16时左右到岩场，干了三把顶绳）&lt;br /&gt;
20200913 白河鸽壁大麻雀攀岩（11时左右到岩场，又干了两把顶绳，第一次周末连爬两天）&lt;br /&gt;
20200919 白河鸽壁大麻雀攀岩（做完多多的木床，16时左右到岩场，一把顶绳轻松无脱落到顶，有点意外，辛大王被多只马蜂攻击，战状惨烈。第二把顶绳无脱落吃力到顶）&lt;br /&gt;
20200920 白河鸽壁大麻雀攀岩（12时左右到岩场，一把先锋过了难点后右手力竭 take 了，第二把顺利完成，可惜结束动作略变形，不够从容：）&lt;br /&gt;
20201002 - 04 南京 - 兴化 - 南京&lt;br /&gt;
20201004 - 06 南京 - 大连&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2021 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
202101 白河基金管庄抱石交流活动&lt;br /&gt;
20210215 精灵谷抱石&lt;br /&gt;
20210222 精灵谷抱石&lt;br /&gt;
20210302 精灵谷抱石&lt;br /&gt;
20210315 精灵谷抱石&lt;br /&gt;
20210322 精灵谷抱石&lt;br /&gt;
20210411 精灵谷抱石&lt;br /&gt;
20210418 精灵谷抱石&lt;br /&gt;
202104 多次前往植物园&lt;br /&gt;
20210510 精灵谷抱石&lt;br /&gt;
20210724 流白水抱石&lt;br /&gt;
20210830 白河NB峡谷攀岩&lt;br /&gt;
20210913 白河NB峡谷攀岩&lt;br /&gt;
20210923 大连3日&lt;br /&gt;
10 月，多次前往植物园&lt;br /&gt;
11 月，开始搞驹遛车&lt;br /&gt;
20211129 白河老怪抱石&lt;br /&gt;
12月，搞驹遛车多次前往密云&lt;br /&gt;
20211205 国家博物馆&lt;br /&gt;
20211212 白河怀柔环线，带着贵贵遛 BMW 320LI，9.3L/100km&lt;br /&gt;
20211223 密云射电望远镜阵列环线，三口遛 Benz GLA&lt;br /&gt;
20211224 大望路平安夜抱石交流&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2022 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20220103 禅院找波波炸河虾，炫酸汤鱼&lt;br /&gt;
20220109 接上王大饼看木僵贾主任，潭柘寺王平环线遛车。。。&lt;br /&gt;
20220115 遛大弯找冰上扎营的英雄和蚂蚱，当晚车内露营，清晨车内都零下十度左右，嘎小多瑟瑟发抖&lt;br /&gt;
20220131 白河一日，冰上遛多多，禅院围炉夜话。。。&lt;br /&gt;
20220206 大觉寺一日，遛多多&lt;br /&gt;
20220213 大雪一日，冒雪温榆河遛贵贵，富贵兴奋异常&lt;br /&gt;
20220219 妙峰山涧沟环线遛多多&lt;br /&gt;
20220227 妙峰山涧沟环线遛多多&lt;br /&gt;
20220306 白河一日，精灵谷二楼找波波保护借顶绳爬了几把&lt;br /&gt;
20220313 白河一日，老怪逛逛，老怪先生爬了一把疯人院，完了隧道口看了看新石头&lt;br /&gt;
20220319 妙峰山涧沟环线遛多多，最后的春雪&lt;br /&gt;
20220326 白河老怪攀岩&lt;br /&gt;
20220403 白河赶集，老怪攀岩&lt;br /&gt;
20220409 白河老怪攀岩&lt;br /&gt;
20220416-17 白河老怪攀岩&lt;br /&gt;
20220423 白河老怪攀岩&lt;br /&gt;
20220501 白河老怪攀岩&lt;br /&gt;
20220508 白河老怪攀岩&lt;br /&gt;
20220514 白河老怪攀岩&lt;br /&gt;
20220529 四海镇环线一日&lt;br /&gt;
20220611 白河老怪攀岩&lt;br /&gt;
20220629 Weding 十周年&lt;br /&gt;
20220723-24 白河NB峡谷攀岩&lt;br /&gt;
20221015 白河牛盆峪抱石、拣柴，张家坟打水。。。&lt;br /&gt;
20221113 白河牛盆峪抱石&lt;br /&gt;
20221120 白河塔子峪抱石&lt;br /&gt;
20221126 白河董小姐抱石&lt;br /&gt;
20221204 妙峰山涧沟环线遛多多，下山水边玩了玩户外意式咖啡壶、蒸汽奶泡机，气温零度左右，低温环境体验不好啊&lt;br /&gt;
20221210 GL8 发车北灵山，没上去，路边森林里多多玩了玩雪，斋堂水库观景台汉堡晚餐，当夜嗓子干痒，次日低烧。。。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2023 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20230101 妙峰山登高&lt;br /&gt;
20230121 垡头史坦利新年包饺子&lt;br /&gt;
20230218-20 电驹大连3日&lt;br /&gt;
20230305 牛盆峪抱石&lt;br /&gt;
20230311-12 南京、兴化两日&lt;br /&gt;
20230319 牛盆峪抱石&lt;br /&gt;
20230325 牛盆峪搞钱活动，Model Y 拉垫子，带着贵贵附近转了转&lt;br /&gt;
20230331-0404 南京、兴化，提贴地飞行器回&lt;br /&gt;
20230408 白河天门山抱石&lt;br /&gt;
20230430-0502 贴地飞行大连3日，最后一个工作日早走，夜泊秦皇岛汽车园区，和贵贵睡车后，嘎嘎睡前座，还行&lt;br /&gt;
20230520 白河精灵谷世外桃源攀岩&lt;br /&gt;
20230622 白河流白水抱石，王大饼探亲&lt;br /&gt;
20230708 白河NB峡谷攀岩&lt;br /&gt;
20230715 白河NB峡谷攀岩，红点硬伤 5.13c（左肩拉伤后未完全恢复，当天爬了3、4把，天黑收工前拿下，中间休息了好久。。。）&lt;br /&gt;
20230721-22 乌兰察布两日，观云、追光、火山露营，黄花沟人品爆棚，贵贵（嘎小多多）开心异常。。。&lt;br /&gt;
20230819 白河NB峡谷攀岩&lt;br /&gt;
20230826-27 白河NB峡谷攀岩&lt;br /&gt;
20230909-10 枣庄夹谷山攀岩两日，On-Sight 小天鹅 5.12a&lt;br /&gt;
20230930-1001 白河小怪攀岩，1002 晚机场接昆明回来的韭儿&lt;br /&gt;
20231028 白河老怪攀岩，红点一箱啤酒 5.13a（左肩还是有点虚，当天爬了3把，摩擦力较上周略差，第一把热身，4进5力竭take。。。14:15 左右第三把拿下），完事和老怪先生两口子汇合，天门山抱石&lt;br /&gt;
今年就国庆以后，去了三次老怪，春天为啥没怎么去呢？&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2024 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20240206 春节带贵贵（嘎小多多）大连探亲。20240210（初一）回，大雾封路，10:00 左右上高速，0:47 WJX&lt;br /&gt;
20240211 初二南下探亲，9:40 WJX 出发。沭阳过夜。次日达。&lt;br /&gt;
20240524 南下探亲，19:38 王庆坨，23:57 泊章丘。次日 21:20 返，00:13 泊新沂。&lt;br /&gt;
&lt;br /&gt;
20240606 贵贵（嘎多小多）心包积液抢救&lt;br /&gt;
20240619 下午农大复查，当夜再次因心包积液导致心脏填塞抢救&lt;br /&gt;
20240620 上午出院回家，刚到进家门就又开始坐立不安、站立呼吸，四肢端还凉，观察约一个小时又送医院，又抽心包积液 250ml 近乎血&lt;br /&gt;
20240621 上午状态还好，见到我们还不停摇尾巴，抓门要出氧箱，复查心超，积液又回到 19 日夜里的量，医生建议输血或者手术。心超只见快速增多的积液，未见其他异常。&lt;br /&gt;
          为免控制不住的血性积液再次心脏填塞，被迫冒险开胸做心包切除尝试止血，术中发现右心房肿物，一并切除，手术前后共输 800ml 血&lt;br /&gt;
20240627 复查，催问医生快速化疗之事，答复至少等病理结果出来再说。。。&lt;br /&gt;
20240628 收到切除之心包、右心房外团块的病理结果：犬血管肉瘤 (HSA)。。。&lt;br /&gt;
20240706 永失我们的乖乖（嘎小多多），心头好像被挖走了一块肉。。。&lt;br /&gt;
&lt;br /&gt;
20240929 - 20241003 广西社更穿洞攀岩：&lt;br /&gt;
  Day1：魂在身后追10b (ON)、驯龙高手10a (ON)、神龙摆尾10c (ON)、13m 10d (ON)、全景图11b (ON)&lt;br /&gt;
  Day2：一番炸12b（挂顶前力竭冲坠）、10a (ON)&lt;br /&gt;
  Day3：开场白11b (ON)、放飞自我11d (ON)&lt;br /&gt;
  Day4：稀奇12a (ON)、清风自来12b（第5挂片take）&lt;br /&gt;
  Day5：壮士12a (又是挂顶前Take）、十三膝12c/d（第15挂片Take）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2025 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20250131 - 20250207 福州一日、罗源抱石三日，泉州一日；回程取道杭州撸 60 只哈士奇。驾特斯拉电驹南下，全程4857km&lt;br /&gt;
20250403 - 20250406 大连探亲三日，4/3 13:00 WJX 出发，22时左右夜泊北镇，扎营冻屁股。4/5 滨海路投喂活爹野生梅花鹿。4/6 6:10出发，14:30朝阳休整，检查站大堵车。 &lt;br /&gt;
20250501 - 20250504 淄博刁花峪、石马攀岩四日，梁上君子5.11b (on)、剪刀手5.11c(on)、糖醋鲤鱼5.11a(on)，山高水长5.11c (flash)&lt;br /&gt;
20250505 - 20250506 电驹淄博八陡镇出发，兴化探亲，当晚回，蒙阴附近遭遇大风大雨，夜泊莱芜北服务区&lt;br /&gt;
20250531 - 20250601 龙安攀岩两日，富春小笼5.11c (on)、鸭咩爹 5.11a (on)，Hello Kitty 5.12b（顶绳一把完攀），旅行日记 5.13b/c（顶绳 work 了两把），Yellow Gold 5.13a（顶绳 work 了一把）&lt;br /&gt;
20250607 龙安攀岩一日，鸟窝 5.12d（先锋一把、顶绳一把），旅行日记 5.13b/c（顶绳 work 了一把）&lt;br /&gt;
20250608 白河NB峡谷攀岩一日，红点太阳花 5.12c（爬了四把，大意了）&lt;br /&gt;
20250926 - 20251007 开封半日、咸宁鸣水泉攀岩 5 日（28、29、1、2、3、4）、咸宁千桥一日（30）、芜湖戴店半日（5）、兴化探亲一日（10/6 八字桥夏小虎逝年小酒馆）。全程特斯拉电驹，全程2423km。&lt;br /&gt;
20251012 白河黑石抱石，我只能奔跑 V7&lt;br /&gt;
202510 - 202511 周末老怪战斗&lt;br /&gt;
20251230 建平牛河梁半日&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20260101 - 20260102 大连探亲 2 日&lt;br /&gt;
20260213 - 20260227 春节假期 14 日&lt;br /&gt;
* 13日4:00接上大猴，下午到滨海，撸两下老葛，继续苏州探望三伯，当晚宿苏州。&lt;br /&gt;
* 次日回家。2/16 日晚启程、2/17 下午岳阳半日（岳阳楼、嗦粉） 宿岳阳。&lt;br /&gt;
* 2/18 21:00 到达桂林两江机场接上嘎小辫。&lt;br /&gt;
* 2/19 - 2/25 阳朔白山、雷劈山、思龙山攀岩，flash 多面手 5.11b。&lt;br /&gt;
* 2/25 下午直接从雷劈返程，19:30 到达机场，送别小分队，当晚泊永州。&lt;br /&gt;
* 2/26 永州零陵区 2h，8:30 交警大队充电，香零烟雨印象深刻。&lt;br /&gt;
* 2/26 夜穿大别山余脉，过信阳，宿确山县（3毛3一个的水煎包）&lt;br /&gt;
全程驾特斯拉电驹南下，总行程约 5800km&lt;br /&gt;
20260403 - 20260406 清明 3 日。&lt;br /&gt;
* 4/3 宿沭阳服务区，4/4 镇江伙头烧蟹黄汤包吃早饭，睡半日，晚武家小厨吃公橘黄。&lt;br /&gt;
* 4/5 南山攀岩一日，红点 辛拉面 5.12a、步步为营 5.11d，当晚直奔扬中，捞了两条北方橘黄付 60 加工费让老板现做，味道绝了。当晚宿兴化。&lt;br /&gt;
* 4/6 日看望完父母后，下午返。&lt;br /&gt;
20260430 - 20260506&lt;br /&gt;
* 4/30 15:30 出发，凌晨到淄博乐疃村。&lt;br /&gt;
* 5/1 - 5/2 刁花峪攀岩，每天两把&lt;br /&gt;
* 5/3 石马攀岩， 彩云之南 5.11b（红点）、恼人的小岩皮 5.10d (on)、泥泞的步伐 5.12a（顶绳一把），充完去挪车，回来阿标意犹未尽，还想再干几把，天色突变，查看彩云，预警雨马山到，赶紧下撤，赶下雨前上车。。。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* 内蒙太仆寺旗的石条山 [http://bowuguan.hljlr.gov.cn/kpbk/201809/t20180912_266910.htm 中国石柱群 火山岩柱状节理分布图]&lt;br /&gt;
* [https://www.parachuteshop.com/Mirage%20G4.htm MIRAGE parachute] [https://jingyan.baidu.com/article/6079ad0e94668728fe86db76.html 001][http://www.tfskydive.com/AFF.html 002][http://www.xdtsjlb.com/ 003]&lt;br /&gt;
* [https://www.rockskymarket.com/8-containers Containers]&lt;br /&gt;
* [http://www.wingsuitfly.com/ Wingsuit flying]&lt;br /&gt;
* [https://blacksheepadventuresports.com/2018/10/13/comparison-review-sub-9mm-climbing-ropes/ Sub 9mm Climbing Rope Comparison]&lt;br /&gt;
* [https://www.dailyscandinavian.com/climbing-in-the-lofoten-islands-norway/ Climbing in the Lofoten Islands, Norway] https://www.thecrag.com/climbing/norway/lofoten https://outtt.com/en/norway/lofoten/hiking https://outtt.com/en/adventures/8686/djevelporten-fl%C3%B8ya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lofoten]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95</id>
		<title>近年户外活动记录</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95"/>
				<updated>2026-05-06T07:12:03Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 2026 年 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Jack Tan (BH1RBH)，曾用网络ID: comcat / 刀切馒头&lt;br /&gt;
&lt;br /&gt;
== 2019 年以前 ==&lt;br /&gt;
&lt;br /&gt;
2007 年开始一个人背着包在户外乱窜&lt;br /&gt;
&lt;br /&gt;
2009 年底投奔 lvye.org，批量探路、冬季海陀，大五台、小五台穿越扎营，夏季小五台轻装一日五台连穿，小五台重装两日四台...&lt;br /&gt;
&lt;br /&gt;
2010 始开始攀冰，每年的 12月到次年的二月，约有五、六个周末在白河冰壁下度过&lt;br /&gt;
&lt;br /&gt;
2010 夏开始攀岩，着迷且不能自已。12 年岩季始开始丰收，至岩季结束共红点 6 条 5.12 级野外线路，最高难度 5.12d&lt;br /&gt;
&lt;br /&gt;
夏季攀岩冬季攀冰的活动，逐渐固定为一种生活方式&lt;br /&gt;
&lt;br /&gt;
2010 春节独自前往位于甘肃嘉峪关的七一冰川进行冰雪训练，4 月和同伴攀登青海的岗什卡雪峰，10月攀登四川理县的半脊峰&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[小五台一日五台连穿]] 2010-06-26&lt;br /&gt;
* [[岗什卡印象]]  ---- 初试技术攀登 2010-04-04&lt;br /&gt;
* [[白河 Beginner 初试结组攀登]] 2010-09-11&lt;br /&gt;
* [[完美心情笔记]] 2010-09-23&lt;br /&gt;
* [[半脊峰攀登笔记]] 2010-10-02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不玩海拔，只玩技术，偏执过程&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
091031 - 091101 后山铺 - 豪宅 - 天仙瀑两日（卡尔松）&lt;br /&gt;
091114 柏峪 - 黄草梁 - 七座楼往返（卡尔松）&lt;br /&gt;
091121 - 091122 大五台两日（soarrow）&lt;br /&gt;
091206 人头山探路（789ijn）&lt;br /&gt;
091218 - 091219 大海陀村夜袭 - 鞍部扎营 - 西大庄科 （soarrow）&lt;br /&gt;
091220 上峪 - 四干顶 - 白龙潭（789ijn）&lt;br /&gt;
&lt;br /&gt;
100101 - 100102 小五台两日，西台往返 （约伴，老大海，风中的大海，南子，壁虎，三脚猫，soarrow，客栈）&lt;br /&gt;
100109 - 100110 珍珠湖冰面扎营（soarrow）&lt;br /&gt;
100117 小五台北二往返（贺兰月明）&lt;br /&gt;
100130 - 100131 小五台两日，北台往返（约伴，贺兰月明，boater，混沌，mallow）&lt;br /&gt;
&lt;br /&gt;
100206 - 100207 桃园仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
100217 - 100219 七一冰川 (solo, 5031/5150)&lt;br /&gt;
&lt;br /&gt;
100227 - 100228 安家庄攀冰&lt;br /&gt;
100307 安家庄攀冰&lt;br /&gt;
100313 小五台北东未遂（约伴，boater，贺兰月明，花鼎，GAGA，客栈）&lt;br /&gt;
100320 - 100321 安家庄攀冰&lt;br /&gt;
&lt;br /&gt;
100404 - 100405 岗什卡（客栈, GAGA, soarrow; 4860/5254）&lt;br /&gt;
&lt;br /&gt;
每周四晚开始抱石&lt;br /&gt;
100424 - 100425 圆台两日（soarrow）&lt;br /&gt;
100522 - 100523 海陀两日（约伴）&lt;br /&gt;
100529 大香巴拉（领队组）&lt;br /&gt;
100605 - 100606 后河海陀两日（领队组）&lt;br /&gt;
&lt;br /&gt;
100619 - 100620 白河攀岩（5.10a）&lt;br /&gt;
100626 小五台一日五台连穿（领队组）&lt;br /&gt;
100710 - 100711 小五台两日（花鼎）&lt;br /&gt;
100717 - 100718 小五台两日四台（花鼎）&lt;br /&gt;
100724 - 100725 白河攀岩（On-Sight 志愿者，传统小怪双裂缝）&lt;br /&gt;
100731 - 100801 白河攀岩（红点 mini 肉塞）&lt;br /&gt;
100806 - 100807 白河攀岩（先锋没尽头）&lt;br /&gt;
100814 - 100815 白河攀岩（红点天黑黑）&lt;br /&gt;
100822 白河攀岩（先锋 All In One）&lt;br /&gt;
100828 七道沟 - 云蒙山 - 黑龙秘径重装一日（伙同大雪，久点，河马等）&lt;br /&gt;
100829 白河攀岩（顶绳小怪，分步完成）&lt;br /&gt;
100904 - 100905 白河攀岩（红点无尽头，顶绳完攀小怪）&lt;br /&gt;
100911 白河攀岩（领攀 Beginner，与 GAGA 结组） &lt;br /&gt;
100912 白河攀岩（先锋小怪）&lt;br /&gt;
100922 白河攀岩（红点小怪）&lt;br /&gt;
100923 白河攀岩（领攀完美心情，与大雪封山结组） &lt;br /&gt;
&lt;br /&gt;
101002 - 101006 半脊峰（与客栈, GAGA 结组; 5306/5430） &lt;br /&gt;
&lt;br /&gt;
101016 - 101017 白河攀岩&lt;br /&gt;
101025 - 101028 阳朔攀岩&lt;br /&gt;
101029 - 101030 漓江徒步+水上穿越（自带皮划艇）&lt;br /&gt;
&lt;br /&gt;
101225 - 101226 桃源仙谷攀冰&lt;br /&gt;
110101 - 110103 桃源仙谷攀冰&lt;br /&gt;
110108 - 110109 桃源仙谷攀冰&lt;br /&gt;
110122 - 110123 桃源仙谷攀冰&lt;br /&gt;
110206 - 110208 桃源仙谷攀冰&lt;br /&gt;
110219 - 110220 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
110326 - 110327 白河攀岩&lt;br /&gt;
110409 - 110410 白河攀岩&lt;br /&gt;
110416 - 110417 白河攀岩&lt;br /&gt;
110423 - 110424 白河攀岩&lt;br /&gt;
110430 - 110502 郭亮攀岩&lt;br /&gt;
110507 - 110508 白河蜜蜂峡谷攀岩&lt;br /&gt;
110514 - 110515 白河NB峡谷攀岩&lt;br /&gt;
110528 - 110529 扬州 - 兴化 - 镇江&lt;br /&gt;
110604 - 110606 白河NB峡谷攀岩&lt;br /&gt;
110611 - 110612 白河攀岩&lt;br /&gt;
110618 白河老怪攀岩（疯人入院）&lt;br /&gt;
110626 白河老岩场攀岩（红点 slab）&lt;br /&gt;
110627 白河老怪攀岩（分步疯人院）&lt;br /&gt;
110702 - 110703 白河老岩场、老怪攀岩&lt;br /&gt;
110709 白河老怪攀岩&lt;br /&gt;
110813 白河老岩场攀岩（顶绳小裂缝）&lt;br /&gt;
110820 白河老怪攀岩&lt;br /&gt;
110903 白河老怪攀岩&lt;br /&gt;
110917 白河老怪攀岩&lt;br /&gt;
111001 白河小怪攀岩、划艇&lt;br /&gt;
111002 白河老怪攀岩&lt;br /&gt;
111004 - 111006 小五台西沟&lt;br /&gt;
111007 白河老怪攀岩&lt;br /&gt;
111016 白河老怪攀岩&lt;br /&gt;
111023 白河老怪攀岩&lt;br /&gt;
&lt;br /&gt;
111231 - 120101 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
120107 - 120108 桃源仙谷攀冰&lt;br /&gt;
120114 - 120115 桃源仙谷攀冰&lt;br /&gt;
120128 桃源仙谷攀冰&lt;br /&gt;
120204 - 120205 桃源仙谷攀冰&lt;br /&gt;
120211 - 120212 桃源仙谷攀冰&lt;br /&gt;
120218 安家庄结组（40m, 2Ps, WI3，一拖二，领攀）&lt;br /&gt;
&lt;br /&gt;
120331 - 120404 南京、扬州、骑行兴化千岛菜花&lt;br /&gt;
120415 - 120416 白河老怪攀岩（疯人出院，红点疯人院5.12b）&lt;br /&gt;
120421 白河老岩场攀岩（红点11抠）&lt;br /&gt;
120422 白河老岩场攀岩（红点小裂缝）&lt;br /&gt;
120501 白河 NB 峡谷攀岩（红点酒醉的探戈）&lt;br /&gt;
120505 - 120506 白河 NB 峡谷攀岩（红点死硬 5.12b）&lt;br /&gt;
120512 - 120513 白河 NB 峡谷攀岩（分步礼物）&lt;br /&gt;
120519 - 120520 白河 NB 峡谷攀岩（顶绳完攀问柳）&lt;br /&gt;
120526 - 120527 白河 NB 峡谷攀岩（红点问柳 5.12c）&lt;br /&gt;
120602 尖岩抱石&lt;br /&gt;
120603 白河老怪攀岩 (顶绳一箱啤酒）&lt;br /&gt;
120609 - 120610 白河 NB 峡谷攀岩（顶绳双生花后大雨；次日嘎总红点死硬后借绳摸了一把）&lt;br /&gt;
120616 - 120617 白河 NB 峡谷攀岩（顶绳双生花后入夜；次日顶绳完攀双生花后，尝试红点未遂）&lt;br /&gt;
120622 - 120624 白河 NB 峡谷攀岩（红点双生花之姊株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120629 登记结婚&lt;br /&gt;
&lt;br /&gt;
120714 白河 NB 峡谷攀岩（红点双生花之妹株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120818 - 120819 止锚湾海边婚礼&lt;br /&gt;
&lt;br /&gt;
120930 - 121006 贵州紫云格凸攀岩（红点 La Piscineta Cina 5.12c/7b+）&lt;br /&gt;
121215 白河云蒙峡攀冰&lt;br /&gt;
&lt;br /&gt;
130112 白河桃源仙谷攀冰&lt;br /&gt;
130119 白河桃源仙谷攀冰&lt;br /&gt;
130126 白河NB峡谷攀冰&lt;br /&gt;
130127 白河天仙瀑攀冰&lt;br /&gt;
130207 - 130217 泰国甲米攀岩&lt;br /&gt;
&lt;br /&gt;
130404 - 130406 扬州兴化南京&lt;br /&gt;
&lt;br /&gt;
130528 嘎小多和大头出生，满月后嘎小多被我们领养&lt;br /&gt;
&lt;br /&gt;
130609 - 130613 大连&lt;br /&gt;
130619 - 130629 非洲肯尼亚追野生动物 10 日&lt;br /&gt;
130720 - 130721 驼梁两日&lt;br /&gt;
&lt;br /&gt;
131001 - 131006 阳朔攀岩&lt;br /&gt;
140131 - 140205 越南Cat Ba岛攀岩&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2019 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
190601 - 190602 白河精灵谷露天剧场恢复攀岩，如履薄冰 5.10d&lt;br /&gt;
190607 - 190609 端午白河精灵谷露天剧场攀岩、NB 峡谷攀岩（绝唱 5.10b、彩虹 5.11c）&lt;br /&gt;
190615 - 190616 白河精灵谷露天剧场攀岩、小怪攀岩（志愿者 5.10a）&lt;br /&gt;
190622 - 190623 白河精灵谷露天剧场、世外桃源攀岩（别有洞天）&lt;br /&gt;
190624 大雪岩时攀岩馆开年卡&lt;br /&gt;
190627 恢复抱石， 岩时攀岩馆&lt;br /&gt;
190629 - 190630 白河精灵谷世外桃源攀岩，红点别有洞天 5.10d&lt;br /&gt;
190706 - 190707 白河精灵谷世外桃源攀岩&lt;br /&gt;
190713 - 190714 白河精灵谷世外桃源攀岩&lt;br /&gt;
190720 - 190721 白河精灵谷世外桃源攀岩&lt;br /&gt;
190727 - 190728 白河精灵谷世外桃源、NB 峡谷（死硬）攀岩&lt;br /&gt;
190808 - 190811 大连 4 日&lt;br /&gt;
190817 - 190818 白河精灵谷世外桃源攀岩，红点吃瓜群众 5.11c/d&lt;br /&gt;
190831 - 190901 白河精灵谷世外桃源攀岩，开始摸红太阳 5.12a&lt;br /&gt;
190907 - 190908 白河精灵谷世外桃源攀岩，摸红太阳&lt;br /&gt;
190913 - 190915 白河精灵谷世外桃源攀岩，尝试红点红太阳&lt;br /&gt;
190921 - 190922 白河精灵谷世外桃源、露天剧场攀岩，红点红太阳 5.12a，Flash 天生丽质 5.11a、滴水之恩 5.11a；On-Sight 春风化雨 5.11a&lt;br /&gt;
191019 白河精灵谷露天剧场攀岩，红点夜凉如水 5.11a、阳光明媚 5.11c&lt;br /&gt;
191020 白河精灵谷露天剧场攀岩，白河攀岩基金比赛交流活动，顶绳完攀露天剧场所有线路（12 条）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2020 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20200718 白河鸽壁大麻雀攀岩（摸了一把没到顶，难点没分）&lt;br /&gt;
20200725 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200801 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200808 白河鸽壁大麻雀攀岩（两把顶绳，山间流水年度最充沛）&lt;br /&gt;
20200815 白河鸽壁大麻雀攀岩（两把顶绳，山间流水还是很多，多多趴石头上听水参禅：）&lt;br /&gt;
20200822 白河鸽壁大麻雀攀岩（16时左右到岩场，爬了两把顶绳，肉老师生日，拍了一组）&lt;br /&gt;
20200830 白河鸽壁大麻雀攀岩（雨师周六有事，很晚才干到白河）&lt;br /&gt;
20200905 无攀岩，带多多从鸽壁穿越到精灵谷，世外桃源碰到大头玩了会儿（GAGA回大连，雨师牧沙去了天门山。当晚小何布达拉的分享会）&lt;br /&gt;
20200906 白河鸽壁大麻雀攀岩（快到中午和雨师去干了一把，被马蜂蛰到大臂，先锋艰难挂到顶）&lt;br /&gt;
20200912 白河鸽壁大麻雀攀岩（晨起大雨，午后放大晴，云奇美，16时左右到岩场，干了三把顶绳）&lt;br /&gt;
20200913 白河鸽壁大麻雀攀岩（11时左右到岩场，又干了两把顶绳，第一次周末连爬两天）&lt;br /&gt;
20200919 白河鸽壁大麻雀攀岩（做完多多的木床，16时左右到岩场，一把顶绳轻松无脱落到顶，有点意外，辛大王被多只马蜂攻击，战状惨烈。第二把顶绳无脱落吃力到顶）&lt;br /&gt;
20200920 白河鸽壁大麻雀攀岩（12时左右到岩场，一把先锋过了难点后右手力竭 take 了，第二把顺利完成，可惜结束动作略变形，不够从容：）&lt;br /&gt;
20201002 - 04 南京 - 兴化 - 南京&lt;br /&gt;
20201004 - 06 南京 - 大连&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2021 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
202101 白河基金管庄抱石交流活动&lt;br /&gt;
20210215 精灵谷抱石&lt;br /&gt;
20210222 精灵谷抱石&lt;br /&gt;
20210302 精灵谷抱石&lt;br /&gt;
20210315 精灵谷抱石&lt;br /&gt;
20210322 精灵谷抱石&lt;br /&gt;
20210411 精灵谷抱石&lt;br /&gt;
20210418 精灵谷抱石&lt;br /&gt;
202104 多次前往植物园&lt;br /&gt;
20210510 精灵谷抱石&lt;br /&gt;
20210724 流白水抱石&lt;br /&gt;
20210830 白河NB峡谷攀岩&lt;br /&gt;
20210913 白河NB峡谷攀岩&lt;br /&gt;
20210923 大连3日&lt;br /&gt;
10 月，多次前往植物园&lt;br /&gt;
11 月，开始搞驹遛车&lt;br /&gt;
20211129 白河老怪抱石&lt;br /&gt;
12月，搞驹遛车多次前往密云&lt;br /&gt;
20211205 国家博物馆&lt;br /&gt;
20211212 白河怀柔环线，带着贵贵遛 BMW 320LI，9.3L/100km&lt;br /&gt;
20211223 密云射电望远镜阵列环线，三口遛 Benz GLA&lt;br /&gt;
20211224 大望路平安夜抱石交流&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2022 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20220103 禅院找波波炸河虾，炫酸汤鱼&lt;br /&gt;
20220109 接上王大饼看木僵贾主任，潭柘寺王平环线遛车。。。&lt;br /&gt;
20220115 遛大弯找冰上扎营的英雄和蚂蚱，当晚车内露营，清晨车内都零下十度左右，嘎小多瑟瑟发抖&lt;br /&gt;
20220131 白河一日，冰上遛多多，禅院围炉夜话。。。&lt;br /&gt;
20220206 大觉寺一日，遛多多&lt;br /&gt;
20220213 大雪一日，冒雪温榆河遛贵贵，富贵兴奋异常&lt;br /&gt;
20220219 妙峰山涧沟环线遛多多&lt;br /&gt;
20220227 妙峰山涧沟环线遛多多&lt;br /&gt;
20220306 白河一日，精灵谷二楼找波波保护借顶绳爬了几把&lt;br /&gt;
20220313 白河一日，老怪逛逛，老怪先生爬了一把疯人院，完了隧道口看了看新石头&lt;br /&gt;
20220319 妙峰山涧沟环线遛多多，最后的春雪&lt;br /&gt;
20220326 白河老怪攀岩&lt;br /&gt;
20220403 白河赶集，老怪攀岩&lt;br /&gt;
20220409 白河老怪攀岩&lt;br /&gt;
20220416-17 白河老怪攀岩&lt;br /&gt;
20220423 白河老怪攀岩&lt;br /&gt;
20220501 白河老怪攀岩&lt;br /&gt;
20220508 白河老怪攀岩&lt;br /&gt;
20220514 白河老怪攀岩&lt;br /&gt;
20220529 四海镇环线一日&lt;br /&gt;
20220611 白河老怪攀岩&lt;br /&gt;
20220629 Weding 十周年&lt;br /&gt;
20220723-24 白河NB峡谷攀岩&lt;br /&gt;
20221015 白河牛盆峪抱石、拣柴，张家坟打水。。。&lt;br /&gt;
20221113 白河牛盆峪抱石&lt;br /&gt;
20221120 白河塔子峪抱石&lt;br /&gt;
20221126 白河董小姐抱石&lt;br /&gt;
20221204 妙峰山涧沟环线遛多多，下山水边玩了玩户外意式咖啡壶、蒸汽奶泡机，气温零度左右，低温环境体验不好啊&lt;br /&gt;
20221210 GL8 发车北灵山，没上去，路边森林里多多玩了玩雪，斋堂水库观景台汉堡晚餐，当夜嗓子干痒，次日低烧。。。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2023 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20230101 妙峰山登高&lt;br /&gt;
20230121 垡头史坦利新年包饺子&lt;br /&gt;
20230218-20 电驹大连3日&lt;br /&gt;
20230305 牛盆峪抱石&lt;br /&gt;
20230311-12 南京、兴化两日&lt;br /&gt;
20230319 牛盆峪抱石&lt;br /&gt;
20230325 牛盆峪搞钱活动，Model Y 拉垫子，带着贵贵附近转了转&lt;br /&gt;
20230331-0404 南京、兴化，提贴地飞行器回&lt;br /&gt;
20230408 白河天门山抱石&lt;br /&gt;
20230430-0502 贴地飞行大连3日，最后一个工作日早走，夜泊秦皇岛汽车园区，和贵贵睡车后，嘎嘎睡前座，还行&lt;br /&gt;
20230520 白河精灵谷世外桃源攀岩&lt;br /&gt;
20230622 白河流白水抱石，王大饼探亲&lt;br /&gt;
20230708 白河NB峡谷攀岩&lt;br /&gt;
20230715 白河NB峡谷攀岩，红点硬伤 5.13c（左肩拉伤后未完全恢复，当天爬了3、4把，天黑收工前拿下，中间休息了好久。。。）&lt;br /&gt;
20230721-22 乌兰察布两日，观云、追光、火山露营，黄花沟人品爆棚，贵贵（嘎小多多）开心异常。。。&lt;br /&gt;
20230819 白河NB峡谷攀岩&lt;br /&gt;
20230826-27 白河NB峡谷攀岩&lt;br /&gt;
20230909-10 枣庄夹谷山攀岩两日，On-Sight 小天鹅 5.12a&lt;br /&gt;
20230930-1001 白河小怪攀岩，1002 晚机场接昆明回来的韭儿&lt;br /&gt;
20231028 白河老怪攀岩，红点一箱啤酒 5.13a（左肩还是有点虚，当天爬了3把，摩擦力较上周略差，第一把热身，4进5力竭take。。。14:15 左右第三把拿下），完事和老怪先生两口子汇合，天门山抱石&lt;br /&gt;
今年就国庆以后，去了三次老怪，春天为啥没怎么去呢？&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2024 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20240206 春节带贵贵（嘎小多多）大连探亲。20240210（初一）回，大雾封路，10:00 左右上高速，0:47 WJX&lt;br /&gt;
20240211 初二南下探亲，9:40 WJX 出发。沭阳过夜。次日达。&lt;br /&gt;
20240524 南下探亲，19:38 王庆坨，23:57 泊章丘。次日 21:20 返，00:13 泊新沂。&lt;br /&gt;
&lt;br /&gt;
20240606 贵贵（嘎多小多）心包积液抢救&lt;br /&gt;
20240619 下午农大复查，当夜再次因心包积液导致心脏填塞抢救&lt;br /&gt;
20240620 上午出院回家，刚到进家门就又开始坐立不安、站立呼吸，四肢端还凉，观察约一个小时又送医院，又抽心包积液 250ml 近乎血&lt;br /&gt;
20240621 上午状态还好，见到我们还不停摇尾巴，抓门要出氧箱，复查心超，积液又回到 19 日夜里的量，医生建议输血或者手术。心超只见快速增多的积液，未见其他异常。&lt;br /&gt;
          为免控制不住的血性积液再次心脏填塞，被迫冒险开胸做心包切除尝试止血，术中发现右心房肿物，一并切除，手术前后共输 800ml 血&lt;br /&gt;
20240627 复查，催问医生快速化疗之事，答复至少等病理结果出来再说。。。&lt;br /&gt;
20240628 收到切除之心包、右心房外团块的病理结果：犬血管肉瘤 (HSA)。。。&lt;br /&gt;
20240706 永失我们的乖乖（嘎小多多），心头好像被挖走了一块肉。。。&lt;br /&gt;
&lt;br /&gt;
20240929 - 20241003 广西社更穿洞攀岩：&lt;br /&gt;
  Day1：魂在身后追10b (ON)、驯龙高手10a (ON)、神龙摆尾10c (ON)、13m 10d (ON)、全景图11b (ON)&lt;br /&gt;
  Day2：一番炸12b（挂顶前力竭冲坠）、10a (ON)&lt;br /&gt;
  Day3：开场白11b (ON)、放飞自我11d (ON)&lt;br /&gt;
  Day4：稀奇12a (ON)、清风自来12b（第5挂片take）&lt;br /&gt;
  Day5：壮士12a (又是挂顶前Take）、十三膝12c/d（第15挂片Take）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2025 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20250131 - 20250207 福州一日、罗源抱石三日，泉州一日；回程取道杭州撸 60 只哈士奇。驾特斯拉电驹南下，全程4857km&lt;br /&gt;
20250403 - 20250406 大连探亲三日，4/3 13:00 WJX 出发，22时左右夜泊北镇，扎营冻屁股。4/5 滨海路投喂活爹野生梅花鹿。4/6 6:10出发，14:30朝阳休整，检查站大堵车。 &lt;br /&gt;
20250501 - 20250504 淄博刁花峪、石马攀岩四日，梁上君子5.11b (on)、剪刀手5.11c(on)、糖醋鲤鱼5.11a(on)，山高水长5.11c (flash)&lt;br /&gt;
20250505 - 20250506 电驹淄博八陡镇出发，兴化探亲，当晚回，蒙阴附近遭遇大风大雨，夜泊莱芜北服务区&lt;br /&gt;
20250531 - 20250601 龙安攀岩两日，富春小笼5.11c (on)、鸭咩爹 5.11a (on)，Hello Kitty 5.12b（顶绳一把完攀），旅行日记 5.13b/c（顶绳 work 了两把），Yellow Gold 5.13a（顶绳 work 了一把）&lt;br /&gt;
20250607 龙安攀岩一日，鸟窝 5.12d（先锋一把、顶绳一把），旅行日记 5.13b/c（顶绳 work 了一把）&lt;br /&gt;
20250608 白河NB峡谷攀岩一日，红点太阳花 5.12c（爬了四把，大意了）&lt;br /&gt;
20250926 - 20251007 开封半日、咸宁鸣水泉攀岩 5 日（28、29、1、2、3、4）、咸宁千桥一日（30）、芜湖戴店半日（5）、兴化探亲一日（10/6 八字桥夏小虎逝年小酒馆）。全程特斯拉电驹，全程2423km。&lt;br /&gt;
20251012 白河黑石抱石，我只能奔跑 V7&lt;br /&gt;
202510 - 202511 周末老怪战斗&lt;br /&gt;
20251230 建平牛河梁半日&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20260101 - 20260102 大连探亲 2 日&lt;br /&gt;
20260213 - 20260227 春节假期 14 日&lt;br /&gt;
* 13日4:00接上大猴，下午到滨海，撸两下老葛，继续苏州探望三伯，当晚宿苏州。&lt;br /&gt;
* 次日回家。2/16 日晚启程、2/17 下午岳阳半日（岳阳楼、嗦粉） 宿岳阳。&lt;br /&gt;
* 2/18 21:00 到达桂林两江机场接上嘎小辫。&lt;br /&gt;
* 2/19 - 2/25 阳朔白山、雷劈山、思龙山攀岩，flash 多面手 5.11b。&lt;br /&gt;
* 2/25 下午直接从雷劈返程，19:30 到达机场，送别小分队，当晚泊永州。&lt;br /&gt;
* 2/26 永州零陵区 2h，8:30 交警大队充电，香零烟雨印象深刻。&lt;br /&gt;
* 2/26 夜穿大别山余脉，过信阳，宿确山县（3毛3一个的水煎包）&lt;br /&gt;
全程驾特斯拉电驹南下，总行程约 5800km&lt;br /&gt;
20260403 - 20260406 清明 3 日。&lt;br /&gt;
* 4/3 宿沭阳服务区，4/4 镇江伙头烧蟹黄汤包吃早饭，睡半日，晚武家小厨吃公橘黄。&lt;br /&gt;
* 4/5 南山攀岩一日，红点 辛拉面 5.12a、步步为营 5.11d，当晚直奔扬中，捞了两条北方橘黄付 60 加工费让老板现做，味道绝了。当晚宿兴化。&lt;br /&gt;
* 4/6 日看望完父母后，下午返。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* 内蒙太仆寺旗的石条山 [http://bowuguan.hljlr.gov.cn/kpbk/201809/t20180912_266910.htm 中国石柱群 火山岩柱状节理分布图]&lt;br /&gt;
* [https://www.parachuteshop.com/Mirage%20G4.htm MIRAGE parachute] [https://jingyan.baidu.com/article/6079ad0e94668728fe86db76.html 001][http://www.tfskydive.com/AFF.html 002][http://www.xdtsjlb.com/ 003]&lt;br /&gt;
* [https://www.rockskymarket.com/8-containers Containers]&lt;br /&gt;
* [http://www.wingsuitfly.com/ Wingsuit flying]&lt;br /&gt;
* [https://blacksheepadventuresports.com/2018/10/13/comparison-review-sub-9mm-climbing-ropes/ Sub 9mm Climbing Rope Comparison]&lt;br /&gt;
* [https://www.dailyscandinavian.com/climbing-in-the-lofoten-islands-norway/ Climbing in the Lofoten Islands, Norway] https://www.thecrag.com/climbing/norway/lofoten https://outtt.com/en/norway/lofoten/hiking https://outtt.com/en/adventures/8686/djevelporten-fl%C3%B8ya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lofoten]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95</id>
		<title>近年户外活动记录</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95"/>
				<updated>2026-05-06T07:10:48Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 2026 年 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Jack Tan (BH1RBH)，曾用网络ID: comcat / 刀切馒头&lt;br /&gt;
&lt;br /&gt;
== 2019 年以前 ==&lt;br /&gt;
&lt;br /&gt;
2007 年开始一个人背着包在户外乱窜&lt;br /&gt;
&lt;br /&gt;
2009 年底投奔 lvye.org，批量探路、冬季海陀，大五台、小五台穿越扎营，夏季小五台轻装一日五台连穿，小五台重装两日四台...&lt;br /&gt;
&lt;br /&gt;
2010 始开始攀冰，每年的 12月到次年的二月，约有五、六个周末在白河冰壁下度过&lt;br /&gt;
&lt;br /&gt;
2010 夏开始攀岩，着迷且不能自已。12 年岩季始开始丰收，至岩季结束共红点 6 条 5.12 级野外线路，最高难度 5.12d&lt;br /&gt;
&lt;br /&gt;
夏季攀岩冬季攀冰的活动，逐渐固定为一种生活方式&lt;br /&gt;
&lt;br /&gt;
2010 春节独自前往位于甘肃嘉峪关的七一冰川进行冰雪训练，4 月和同伴攀登青海的岗什卡雪峰，10月攀登四川理县的半脊峰&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[小五台一日五台连穿]] 2010-06-26&lt;br /&gt;
* [[岗什卡印象]]  ---- 初试技术攀登 2010-04-04&lt;br /&gt;
* [[白河 Beginner 初试结组攀登]] 2010-09-11&lt;br /&gt;
* [[完美心情笔记]] 2010-09-23&lt;br /&gt;
* [[半脊峰攀登笔记]] 2010-10-02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不玩海拔，只玩技术，偏执过程&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
091031 - 091101 后山铺 - 豪宅 - 天仙瀑两日（卡尔松）&lt;br /&gt;
091114 柏峪 - 黄草梁 - 七座楼往返（卡尔松）&lt;br /&gt;
091121 - 091122 大五台两日（soarrow）&lt;br /&gt;
091206 人头山探路（789ijn）&lt;br /&gt;
091218 - 091219 大海陀村夜袭 - 鞍部扎营 - 西大庄科 （soarrow）&lt;br /&gt;
091220 上峪 - 四干顶 - 白龙潭（789ijn）&lt;br /&gt;
&lt;br /&gt;
100101 - 100102 小五台两日，西台往返 （约伴，老大海，风中的大海，南子，壁虎，三脚猫，soarrow，客栈）&lt;br /&gt;
100109 - 100110 珍珠湖冰面扎营（soarrow）&lt;br /&gt;
100117 小五台北二往返（贺兰月明）&lt;br /&gt;
100130 - 100131 小五台两日，北台往返（约伴，贺兰月明，boater，混沌，mallow）&lt;br /&gt;
&lt;br /&gt;
100206 - 100207 桃园仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
100217 - 100219 七一冰川 (solo, 5031/5150)&lt;br /&gt;
&lt;br /&gt;
100227 - 100228 安家庄攀冰&lt;br /&gt;
100307 安家庄攀冰&lt;br /&gt;
100313 小五台北东未遂（约伴，boater，贺兰月明，花鼎，GAGA，客栈）&lt;br /&gt;
100320 - 100321 安家庄攀冰&lt;br /&gt;
&lt;br /&gt;
100404 - 100405 岗什卡（客栈, GAGA, soarrow; 4860/5254）&lt;br /&gt;
&lt;br /&gt;
每周四晚开始抱石&lt;br /&gt;
100424 - 100425 圆台两日（soarrow）&lt;br /&gt;
100522 - 100523 海陀两日（约伴）&lt;br /&gt;
100529 大香巴拉（领队组）&lt;br /&gt;
100605 - 100606 后河海陀两日（领队组）&lt;br /&gt;
&lt;br /&gt;
100619 - 100620 白河攀岩（5.10a）&lt;br /&gt;
100626 小五台一日五台连穿（领队组）&lt;br /&gt;
100710 - 100711 小五台两日（花鼎）&lt;br /&gt;
100717 - 100718 小五台两日四台（花鼎）&lt;br /&gt;
100724 - 100725 白河攀岩（On-Sight 志愿者，传统小怪双裂缝）&lt;br /&gt;
100731 - 100801 白河攀岩（红点 mini 肉塞）&lt;br /&gt;
100806 - 100807 白河攀岩（先锋没尽头）&lt;br /&gt;
100814 - 100815 白河攀岩（红点天黑黑）&lt;br /&gt;
100822 白河攀岩（先锋 All In One）&lt;br /&gt;
100828 七道沟 - 云蒙山 - 黑龙秘径重装一日（伙同大雪，久点，河马等）&lt;br /&gt;
100829 白河攀岩（顶绳小怪，分步完成）&lt;br /&gt;
100904 - 100905 白河攀岩（红点无尽头，顶绳完攀小怪）&lt;br /&gt;
100911 白河攀岩（领攀 Beginner，与 GAGA 结组） &lt;br /&gt;
100912 白河攀岩（先锋小怪）&lt;br /&gt;
100922 白河攀岩（红点小怪）&lt;br /&gt;
100923 白河攀岩（领攀完美心情，与大雪封山结组） &lt;br /&gt;
&lt;br /&gt;
101002 - 101006 半脊峰（与客栈, GAGA 结组; 5306/5430） &lt;br /&gt;
&lt;br /&gt;
101016 - 101017 白河攀岩&lt;br /&gt;
101025 - 101028 阳朔攀岩&lt;br /&gt;
101029 - 101030 漓江徒步+水上穿越（自带皮划艇）&lt;br /&gt;
&lt;br /&gt;
101225 - 101226 桃源仙谷攀冰&lt;br /&gt;
110101 - 110103 桃源仙谷攀冰&lt;br /&gt;
110108 - 110109 桃源仙谷攀冰&lt;br /&gt;
110122 - 110123 桃源仙谷攀冰&lt;br /&gt;
110206 - 110208 桃源仙谷攀冰&lt;br /&gt;
110219 - 110220 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
110326 - 110327 白河攀岩&lt;br /&gt;
110409 - 110410 白河攀岩&lt;br /&gt;
110416 - 110417 白河攀岩&lt;br /&gt;
110423 - 110424 白河攀岩&lt;br /&gt;
110430 - 110502 郭亮攀岩&lt;br /&gt;
110507 - 110508 白河蜜蜂峡谷攀岩&lt;br /&gt;
110514 - 110515 白河NB峡谷攀岩&lt;br /&gt;
110528 - 110529 扬州 - 兴化 - 镇江&lt;br /&gt;
110604 - 110606 白河NB峡谷攀岩&lt;br /&gt;
110611 - 110612 白河攀岩&lt;br /&gt;
110618 白河老怪攀岩（疯人入院）&lt;br /&gt;
110626 白河老岩场攀岩（红点 slab）&lt;br /&gt;
110627 白河老怪攀岩（分步疯人院）&lt;br /&gt;
110702 - 110703 白河老岩场、老怪攀岩&lt;br /&gt;
110709 白河老怪攀岩&lt;br /&gt;
110813 白河老岩场攀岩（顶绳小裂缝）&lt;br /&gt;
110820 白河老怪攀岩&lt;br /&gt;
110903 白河老怪攀岩&lt;br /&gt;
110917 白河老怪攀岩&lt;br /&gt;
111001 白河小怪攀岩、划艇&lt;br /&gt;
111002 白河老怪攀岩&lt;br /&gt;
111004 - 111006 小五台西沟&lt;br /&gt;
111007 白河老怪攀岩&lt;br /&gt;
111016 白河老怪攀岩&lt;br /&gt;
111023 白河老怪攀岩&lt;br /&gt;
&lt;br /&gt;
111231 - 120101 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
120107 - 120108 桃源仙谷攀冰&lt;br /&gt;
120114 - 120115 桃源仙谷攀冰&lt;br /&gt;
120128 桃源仙谷攀冰&lt;br /&gt;
120204 - 120205 桃源仙谷攀冰&lt;br /&gt;
120211 - 120212 桃源仙谷攀冰&lt;br /&gt;
120218 安家庄结组（40m, 2Ps, WI3，一拖二，领攀）&lt;br /&gt;
&lt;br /&gt;
120331 - 120404 南京、扬州、骑行兴化千岛菜花&lt;br /&gt;
120415 - 120416 白河老怪攀岩（疯人出院，红点疯人院5.12b）&lt;br /&gt;
120421 白河老岩场攀岩（红点11抠）&lt;br /&gt;
120422 白河老岩场攀岩（红点小裂缝）&lt;br /&gt;
120501 白河 NB 峡谷攀岩（红点酒醉的探戈）&lt;br /&gt;
120505 - 120506 白河 NB 峡谷攀岩（红点死硬 5.12b）&lt;br /&gt;
120512 - 120513 白河 NB 峡谷攀岩（分步礼物）&lt;br /&gt;
120519 - 120520 白河 NB 峡谷攀岩（顶绳完攀问柳）&lt;br /&gt;
120526 - 120527 白河 NB 峡谷攀岩（红点问柳 5.12c）&lt;br /&gt;
120602 尖岩抱石&lt;br /&gt;
120603 白河老怪攀岩 (顶绳一箱啤酒）&lt;br /&gt;
120609 - 120610 白河 NB 峡谷攀岩（顶绳双生花后大雨；次日嘎总红点死硬后借绳摸了一把）&lt;br /&gt;
120616 - 120617 白河 NB 峡谷攀岩（顶绳双生花后入夜；次日顶绳完攀双生花后，尝试红点未遂）&lt;br /&gt;
120622 - 120624 白河 NB 峡谷攀岩（红点双生花之姊株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120629 登记结婚&lt;br /&gt;
&lt;br /&gt;
120714 白河 NB 峡谷攀岩（红点双生花之妹株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120818 - 120819 止锚湾海边婚礼&lt;br /&gt;
&lt;br /&gt;
120930 - 121006 贵州紫云格凸攀岩（红点 La Piscineta Cina 5.12c/7b+）&lt;br /&gt;
121215 白河云蒙峡攀冰&lt;br /&gt;
&lt;br /&gt;
130112 白河桃源仙谷攀冰&lt;br /&gt;
130119 白河桃源仙谷攀冰&lt;br /&gt;
130126 白河NB峡谷攀冰&lt;br /&gt;
130127 白河天仙瀑攀冰&lt;br /&gt;
130207 - 130217 泰国甲米攀岩&lt;br /&gt;
&lt;br /&gt;
130404 - 130406 扬州兴化南京&lt;br /&gt;
&lt;br /&gt;
130528 嘎小多和大头出生，满月后嘎小多被我们领养&lt;br /&gt;
&lt;br /&gt;
130609 - 130613 大连&lt;br /&gt;
130619 - 130629 非洲肯尼亚追野生动物 10 日&lt;br /&gt;
130720 - 130721 驼梁两日&lt;br /&gt;
&lt;br /&gt;
131001 - 131006 阳朔攀岩&lt;br /&gt;
140131 - 140205 越南Cat Ba岛攀岩&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2019 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
190601 - 190602 白河精灵谷露天剧场恢复攀岩，如履薄冰 5.10d&lt;br /&gt;
190607 - 190609 端午白河精灵谷露天剧场攀岩、NB 峡谷攀岩（绝唱 5.10b、彩虹 5.11c）&lt;br /&gt;
190615 - 190616 白河精灵谷露天剧场攀岩、小怪攀岩（志愿者 5.10a）&lt;br /&gt;
190622 - 190623 白河精灵谷露天剧场、世外桃源攀岩（别有洞天）&lt;br /&gt;
190624 大雪岩时攀岩馆开年卡&lt;br /&gt;
190627 恢复抱石， 岩时攀岩馆&lt;br /&gt;
190629 - 190630 白河精灵谷世外桃源攀岩，红点别有洞天 5.10d&lt;br /&gt;
190706 - 190707 白河精灵谷世外桃源攀岩&lt;br /&gt;
190713 - 190714 白河精灵谷世外桃源攀岩&lt;br /&gt;
190720 - 190721 白河精灵谷世外桃源攀岩&lt;br /&gt;
190727 - 190728 白河精灵谷世外桃源、NB 峡谷（死硬）攀岩&lt;br /&gt;
190808 - 190811 大连 4 日&lt;br /&gt;
190817 - 190818 白河精灵谷世外桃源攀岩，红点吃瓜群众 5.11c/d&lt;br /&gt;
190831 - 190901 白河精灵谷世外桃源攀岩，开始摸红太阳 5.12a&lt;br /&gt;
190907 - 190908 白河精灵谷世外桃源攀岩，摸红太阳&lt;br /&gt;
190913 - 190915 白河精灵谷世外桃源攀岩，尝试红点红太阳&lt;br /&gt;
190921 - 190922 白河精灵谷世外桃源、露天剧场攀岩，红点红太阳 5.12a，Flash 天生丽质 5.11a、滴水之恩 5.11a；On-Sight 春风化雨 5.11a&lt;br /&gt;
191019 白河精灵谷露天剧场攀岩，红点夜凉如水 5.11a、阳光明媚 5.11c&lt;br /&gt;
191020 白河精灵谷露天剧场攀岩，白河攀岩基金比赛交流活动，顶绳完攀露天剧场所有线路（12 条）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2020 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20200718 白河鸽壁大麻雀攀岩（摸了一把没到顶，难点没分）&lt;br /&gt;
20200725 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200801 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200808 白河鸽壁大麻雀攀岩（两把顶绳，山间流水年度最充沛）&lt;br /&gt;
20200815 白河鸽壁大麻雀攀岩（两把顶绳，山间流水还是很多，多多趴石头上听水参禅：）&lt;br /&gt;
20200822 白河鸽壁大麻雀攀岩（16时左右到岩场，爬了两把顶绳，肉老师生日，拍了一组）&lt;br /&gt;
20200830 白河鸽壁大麻雀攀岩（雨师周六有事，很晚才干到白河）&lt;br /&gt;
20200905 无攀岩，带多多从鸽壁穿越到精灵谷，世外桃源碰到大头玩了会儿（GAGA回大连，雨师牧沙去了天门山。当晚小何布达拉的分享会）&lt;br /&gt;
20200906 白河鸽壁大麻雀攀岩（快到中午和雨师去干了一把，被马蜂蛰到大臂，先锋艰难挂到顶）&lt;br /&gt;
20200912 白河鸽壁大麻雀攀岩（晨起大雨，午后放大晴，云奇美，16时左右到岩场，干了三把顶绳）&lt;br /&gt;
20200913 白河鸽壁大麻雀攀岩（11时左右到岩场，又干了两把顶绳，第一次周末连爬两天）&lt;br /&gt;
20200919 白河鸽壁大麻雀攀岩（做完多多的木床，16时左右到岩场，一把顶绳轻松无脱落到顶，有点意外，辛大王被多只马蜂攻击，战状惨烈。第二把顶绳无脱落吃力到顶）&lt;br /&gt;
20200920 白河鸽壁大麻雀攀岩（12时左右到岩场，一把先锋过了难点后右手力竭 take 了，第二把顺利完成，可惜结束动作略变形，不够从容：）&lt;br /&gt;
20201002 - 04 南京 - 兴化 - 南京&lt;br /&gt;
20201004 - 06 南京 - 大连&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2021 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
202101 白河基金管庄抱石交流活动&lt;br /&gt;
20210215 精灵谷抱石&lt;br /&gt;
20210222 精灵谷抱石&lt;br /&gt;
20210302 精灵谷抱石&lt;br /&gt;
20210315 精灵谷抱石&lt;br /&gt;
20210322 精灵谷抱石&lt;br /&gt;
20210411 精灵谷抱石&lt;br /&gt;
20210418 精灵谷抱石&lt;br /&gt;
202104 多次前往植物园&lt;br /&gt;
20210510 精灵谷抱石&lt;br /&gt;
20210724 流白水抱石&lt;br /&gt;
20210830 白河NB峡谷攀岩&lt;br /&gt;
20210913 白河NB峡谷攀岩&lt;br /&gt;
20210923 大连3日&lt;br /&gt;
10 月，多次前往植物园&lt;br /&gt;
11 月，开始搞驹遛车&lt;br /&gt;
20211129 白河老怪抱石&lt;br /&gt;
12月，搞驹遛车多次前往密云&lt;br /&gt;
20211205 国家博物馆&lt;br /&gt;
20211212 白河怀柔环线，带着贵贵遛 BMW 320LI，9.3L/100km&lt;br /&gt;
20211223 密云射电望远镜阵列环线，三口遛 Benz GLA&lt;br /&gt;
20211224 大望路平安夜抱石交流&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2022 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20220103 禅院找波波炸河虾，炫酸汤鱼&lt;br /&gt;
20220109 接上王大饼看木僵贾主任，潭柘寺王平环线遛车。。。&lt;br /&gt;
20220115 遛大弯找冰上扎营的英雄和蚂蚱，当晚车内露营，清晨车内都零下十度左右，嘎小多瑟瑟发抖&lt;br /&gt;
20220131 白河一日，冰上遛多多，禅院围炉夜话。。。&lt;br /&gt;
20220206 大觉寺一日，遛多多&lt;br /&gt;
20220213 大雪一日，冒雪温榆河遛贵贵，富贵兴奋异常&lt;br /&gt;
20220219 妙峰山涧沟环线遛多多&lt;br /&gt;
20220227 妙峰山涧沟环线遛多多&lt;br /&gt;
20220306 白河一日，精灵谷二楼找波波保护借顶绳爬了几把&lt;br /&gt;
20220313 白河一日，老怪逛逛，老怪先生爬了一把疯人院，完了隧道口看了看新石头&lt;br /&gt;
20220319 妙峰山涧沟环线遛多多，最后的春雪&lt;br /&gt;
20220326 白河老怪攀岩&lt;br /&gt;
20220403 白河赶集，老怪攀岩&lt;br /&gt;
20220409 白河老怪攀岩&lt;br /&gt;
20220416-17 白河老怪攀岩&lt;br /&gt;
20220423 白河老怪攀岩&lt;br /&gt;
20220501 白河老怪攀岩&lt;br /&gt;
20220508 白河老怪攀岩&lt;br /&gt;
20220514 白河老怪攀岩&lt;br /&gt;
20220529 四海镇环线一日&lt;br /&gt;
20220611 白河老怪攀岩&lt;br /&gt;
20220629 Weding 十周年&lt;br /&gt;
20220723-24 白河NB峡谷攀岩&lt;br /&gt;
20221015 白河牛盆峪抱石、拣柴，张家坟打水。。。&lt;br /&gt;
20221113 白河牛盆峪抱石&lt;br /&gt;
20221120 白河塔子峪抱石&lt;br /&gt;
20221126 白河董小姐抱石&lt;br /&gt;
20221204 妙峰山涧沟环线遛多多，下山水边玩了玩户外意式咖啡壶、蒸汽奶泡机，气温零度左右，低温环境体验不好啊&lt;br /&gt;
20221210 GL8 发车北灵山，没上去，路边森林里多多玩了玩雪，斋堂水库观景台汉堡晚餐，当夜嗓子干痒，次日低烧。。。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2023 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20230101 妙峰山登高&lt;br /&gt;
20230121 垡头史坦利新年包饺子&lt;br /&gt;
20230218-20 电驹大连3日&lt;br /&gt;
20230305 牛盆峪抱石&lt;br /&gt;
20230311-12 南京、兴化两日&lt;br /&gt;
20230319 牛盆峪抱石&lt;br /&gt;
20230325 牛盆峪搞钱活动，Model Y 拉垫子，带着贵贵附近转了转&lt;br /&gt;
20230331-0404 南京、兴化，提贴地飞行器回&lt;br /&gt;
20230408 白河天门山抱石&lt;br /&gt;
20230430-0502 贴地飞行大连3日，最后一个工作日早走，夜泊秦皇岛汽车园区，和贵贵睡车后，嘎嘎睡前座，还行&lt;br /&gt;
20230520 白河精灵谷世外桃源攀岩&lt;br /&gt;
20230622 白河流白水抱石，王大饼探亲&lt;br /&gt;
20230708 白河NB峡谷攀岩&lt;br /&gt;
20230715 白河NB峡谷攀岩，红点硬伤 5.13c（左肩拉伤后未完全恢复，当天爬了3、4把，天黑收工前拿下，中间休息了好久。。。）&lt;br /&gt;
20230721-22 乌兰察布两日，观云、追光、火山露营，黄花沟人品爆棚，贵贵（嘎小多多）开心异常。。。&lt;br /&gt;
20230819 白河NB峡谷攀岩&lt;br /&gt;
20230826-27 白河NB峡谷攀岩&lt;br /&gt;
20230909-10 枣庄夹谷山攀岩两日，On-Sight 小天鹅 5.12a&lt;br /&gt;
20230930-1001 白河小怪攀岩，1002 晚机场接昆明回来的韭儿&lt;br /&gt;
20231028 白河老怪攀岩，红点一箱啤酒 5.13a（左肩还是有点虚，当天爬了3把，摩擦力较上周略差，第一把热身，4进5力竭take。。。14:15 左右第三把拿下），完事和老怪先生两口子汇合，天门山抱石&lt;br /&gt;
今年就国庆以后，去了三次老怪，春天为啥没怎么去呢？&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2024 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20240206 春节带贵贵（嘎小多多）大连探亲。20240210（初一）回，大雾封路，10:00 左右上高速，0:47 WJX&lt;br /&gt;
20240211 初二南下探亲，9:40 WJX 出发。沭阳过夜。次日达。&lt;br /&gt;
20240524 南下探亲，19:38 王庆坨，23:57 泊章丘。次日 21:20 返，00:13 泊新沂。&lt;br /&gt;
&lt;br /&gt;
20240606 贵贵（嘎多小多）心包积液抢救&lt;br /&gt;
20240619 下午农大复查，当夜再次因心包积液导致心脏填塞抢救&lt;br /&gt;
20240620 上午出院回家，刚到进家门就又开始坐立不安、站立呼吸，四肢端还凉，观察约一个小时又送医院，又抽心包积液 250ml 近乎血&lt;br /&gt;
20240621 上午状态还好，见到我们还不停摇尾巴，抓门要出氧箱，复查心超，积液又回到 19 日夜里的量，医生建议输血或者手术。心超只见快速增多的积液，未见其他异常。&lt;br /&gt;
          为免控制不住的血性积液再次心脏填塞，被迫冒险开胸做心包切除尝试止血，术中发现右心房肿物，一并切除，手术前后共输 800ml 血&lt;br /&gt;
20240627 复查，催问医生快速化疗之事，答复至少等病理结果出来再说。。。&lt;br /&gt;
20240628 收到切除之心包、右心房外团块的病理结果：犬血管肉瘤 (HSA)。。。&lt;br /&gt;
20240706 永失我们的乖乖（嘎小多多），心头好像被挖走了一块肉。。。&lt;br /&gt;
&lt;br /&gt;
20240929 - 20241003 广西社更穿洞攀岩：&lt;br /&gt;
  Day1：魂在身后追10b (ON)、驯龙高手10a (ON)、神龙摆尾10c (ON)、13m 10d (ON)、全景图11b (ON)&lt;br /&gt;
  Day2：一番炸12b（挂顶前力竭冲坠）、10a (ON)&lt;br /&gt;
  Day3：开场白11b (ON)、放飞自我11d (ON)&lt;br /&gt;
  Day4：稀奇12a (ON)、清风自来12b（第5挂片take）&lt;br /&gt;
  Day5：壮士12a (又是挂顶前Take）、十三膝12c/d（第15挂片Take）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2025 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20250131 - 20250207 福州一日、罗源抱石三日，泉州一日；回程取道杭州撸 60 只哈士奇。驾特斯拉电驹南下，全程4857km&lt;br /&gt;
20250403 - 20250406 大连探亲三日，4/3 13:00 WJX 出发，22时左右夜泊北镇，扎营冻屁股。4/5 滨海路投喂活爹野生梅花鹿。4/6 6:10出发，14:30朝阳休整，检查站大堵车。 &lt;br /&gt;
20250501 - 20250504 淄博刁花峪、石马攀岩四日，梁上君子5.11b (on)、剪刀手5.11c(on)、糖醋鲤鱼5.11a(on)，山高水长5.11c (flash)&lt;br /&gt;
20250505 - 20250506 电驹淄博八陡镇出发，兴化探亲，当晚回，蒙阴附近遭遇大风大雨，夜泊莱芜北服务区&lt;br /&gt;
20250531 - 20250601 龙安攀岩两日，富春小笼5.11c (on)、鸭咩爹 5.11a (on)，Hello Kitty 5.12b（顶绳一把完攀），旅行日记 5.13b/c（顶绳 work 了两把），Yellow Gold 5.13a（顶绳 work 了一把）&lt;br /&gt;
20250607 龙安攀岩一日，鸟窝 5.12d（先锋一把、顶绳一把），旅行日记 5.13b/c（顶绳 work 了一把）&lt;br /&gt;
20250608 白河NB峡谷攀岩一日，红点太阳花 5.12c（爬了四把，大意了）&lt;br /&gt;
20250926 - 20251007 开封半日、咸宁鸣水泉攀岩 5 日（28、29、1、2、3、4）、咸宁千桥一日（30）、芜湖戴店半日（5）、兴化探亲一日（10/6 八字桥夏小虎逝年小酒馆）。全程特斯拉电驹，全程2423km。&lt;br /&gt;
20251012 白河黑石抱石，我只能奔跑 V7&lt;br /&gt;
202510 - 202511 周末老怪战斗&lt;br /&gt;
20251230 建平牛河梁半日&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20260101 - 20260102 大连探亲 2 日&lt;br /&gt;
20260213 - 20260227 春节假期 14 日&lt;br /&gt;
* 13日4:00接上大猴，下午到滨海，撸两下老葛，继续苏州探望三伯，当晚宿苏州。&lt;br /&gt;
* 次日回家。2/16 日晚启程、2/17 下午岳阳半日（岳阳楼、嗦粉） 宿岳阳。&lt;br /&gt;
* 2/18 21:00 到达桂林两江机场接上嘎小辫。&lt;br /&gt;
* 2/19 - 2/25 阳朔白山、雷劈山、思龙山攀岩，flash 多面手 5.11b。&lt;br /&gt;
* 2/25 下午直接从雷劈返程，19:30 到达机场，送别小分队，当晚泊永州。&lt;br /&gt;
* 2/26 永州零陵区 2h，8:30 交警大队充电，香零烟雨印象深刻。&lt;br /&gt;
* 2/26 夜穿大别山余脉，过信阳，宿确山县（3毛3一个的水煎包）&lt;br /&gt;
全程驾特斯拉电驹南下，总行程约 5800km&lt;br /&gt;
20260403 - 20260406 4/3 宿沭阳服务区，4/4 镇江伙头烧蟹黄汤包吃早饭，睡半日，晚武家小厨吃公橘黄。4/5 南山攀岩一日，红点 辛拉面 5.12a、步步为营 5.11d，当晚直奔扬中，捞了两条北方橘黄付 60 加工费让老板现做，味道绝了。当晚宿兴化，次日看完父母后，下午返。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* 内蒙太仆寺旗的石条山 [http://bowuguan.hljlr.gov.cn/kpbk/201809/t20180912_266910.htm 中国石柱群 火山岩柱状节理分布图]&lt;br /&gt;
* [https://www.parachuteshop.com/Mirage%20G4.htm MIRAGE parachute] [https://jingyan.baidu.com/article/6079ad0e94668728fe86db76.html 001][http://www.tfskydive.com/AFF.html 002][http://www.xdtsjlb.com/ 003]&lt;br /&gt;
* [https://www.rockskymarket.com/8-containers Containers]&lt;br /&gt;
* [http://www.wingsuitfly.com/ Wingsuit flying]&lt;br /&gt;
* [https://blacksheepadventuresports.com/2018/10/13/comparison-review-sub-9mm-climbing-ropes/ Sub 9mm Climbing Rope Comparison]&lt;br /&gt;
* [https://www.dailyscandinavian.com/climbing-in-the-lofoten-islands-norway/ Climbing in the Lofoten Islands, Norway] https://www.thecrag.com/climbing/norway/lofoten https://outtt.com/en/norway/lofoten/hiking https://outtt.com/en/adventures/8686/djevelporten-fl%C3%B8ya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lofoten]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95</id>
		<title>近年户外活动记录</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95"/>
				<updated>2026-05-06T06:59:58Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 2026 年 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Jack Tan (BH1RBH)，曾用网络ID: comcat / 刀切馒头&lt;br /&gt;
&lt;br /&gt;
== 2019 年以前 ==&lt;br /&gt;
&lt;br /&gt;
2007 年开始一个人背着包在户外乱窜&lt;br /&gt;
&lt;br /&gt;
2009 年底投奔 lvye.org，批量探路、冬季海陀，大五台、小五台穿越扎营，夏季小五台轻装一日五台连穿，小五台重装两日四台...&lt;br /&gt;
&lt;br /&gt;
2010 始开始攀冰，每年的 12月到次年的二月，约有五、六个周末在白河冰壁下度过&lt;br /&gt;
&lt;br /&gt;
2010 夏开始攀岩，着迷且不能自已。12 年岩季始开始丰收，至岩季结束共红点 6 条 5.12 级野外线路，最高难度 5.12d&lt;br /&gt;
&lt;br /&gt;
夏季攀岩冬季攀冰的活动，逐渐固定为一种生活方式&lt;br /&gt;
&lt;br /&gt;
2010 春节独自前往位于甘肃嘉峪关的七一冰川进行冰雪训练，4 月和同伴攀登青海的岗什卡雪峰，10月攀登四川理县的半脊峰&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[小五台一日五台连穿]] 2010-06-26&lt;br /&gt;
* [[岗什卡印象]]  ---- 初试技术攀登 2010-04-04&lt;br /&gt;
* [[白河 Beginner 初试结组攀登]] 2010-09-11&lt;br /&gt;
* [[完美心情笔记]] 2010-09-23&lt;br /&gt;
* [[半脊峰攀登笔记]] 2010-10-02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不玩海拔，只玩技术，偏执过程&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
091031 - 091101 后山铺 - 豪宅 - 天仙瀑两日（卡尔松）&lt;br /&gt;
091114 柏峪 - 黄草梁 - 七座楼往返（卡尔松）&lt;br /&gt;
091121 - 091122 大五台两日（soarrow）&lt;br /&gt;
091206 人头山探路（789ijn）&lt;br /&gt;
091218 - 091219 大海陀村夜袭 - 鞍部扎营 - 西大庄科 （soarrow）&lt;br /&gt;
091220 上峪 - 四干顶 - 白龙潭（789ijn）&lt;br /&gt;
&lt;br /&gt;
100101 - 100102 小五台两日，西台往返 （约伴，老大海，风中的大海，南子，壁虎，三脚猫，soarrow，客栈）&lt;br /&gt;
100109 - 100110 珍珠湖冰面扎营（soarrow）&lt;br /&gt;
100117 小五台北二往返（贺兰月明）&lt;br /&gt;
100130 - 100131 小五台两日，北台往返（约伴，贺兰月明，boater，混沌，mallow）&lt;br /&gt;
&lt;br /&gt;
100206 - 100207 桃园仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
100217 - 100219 七一冰川 (solo, 5031/5150)&lt;br /&gt;
&lt;br /&gt;
100227 - 100228 安家庄攀冰&lt;br /&gt;
100307 安家庄攀冰&lt;br /&gt;
100313 小五台北东未遂（约伴，boater，贺兰月明，花鼎，GAGA，客栈）&lt;br /&gt;
100320 - 100321 安家庄攀冰&lt;br /&gt;
&lt;br /&gt;
100404 - 100405 岗什卡（客栈, GAGA, soarrow; 4860/5254）&lt;br /&gt;
&lt;br /&gt;
每周四晚开始抱石&lt;br /&gt;
100424 - 100425 圆台两日（soarrow）&lt;br /&gt;
100522 - 100523 海陀两日（约伴）&lt;br /&gt;
100529 大香巴拉（领队组）&lt;br /&gt;
100605 - 100606 后河海陀两日（领队组）&lt;br /&gt;
&lt;br /&gt;
100619 - 100620 白河攀岩（5.10a）&lt;br /&gt;
100626 小五台一日五台连穿（领队组）&lt;br /&gt;
100710 - 100711 小五台两日（花鼎）&lt;br /&gt;
100717 - 100718 小五台两日四台（花鼎）&lt;br /&gt;
100724 - 100725 白河攀岩（On-Sight 志愿者，传统小怪双裂缝）&lt;br /&gt;
100731 - 100801 白河攀岩（红点 mini 肉塞）&lt;br /&gt;
100806 - 100807 白河攀岩（先锋没尽头）&lt;br /&gt;
100814 - 100815 白河攀岩（红点天黑黑）&lt;br /&gt;
100822 白河攀岩（先锋 All In One）&lt;br /&gt;
100828 七道沟 - 云蒙山 - 黑龙秘径重装一日（伙同大雪，久点，河马等）&lt;br /&gt;
100829 白河攀岩（顶绳小怪，分步完成）&lt;br /&gt;
100904 - 100905 白河攀岩（红点无尽头，顶绳完攀小怪）&lt;br /&gt;
100911 白河攀岩（领攀 Beginner，与 GAGA 结组） &lt;br /&gt;
100912 白河攀岩（先锋小怪）&lt;br /&gt;
100922 白河攀岩（红点小怪）&lt;br /&gt;
100923 白河攀岩（领攀完美心情，与大雪封山结组） &lt;br /&gt;
&lt;br /&gt;
101002 - 101006 半脊峰（与客栈, GAGA 结组; 5306/5430） &lt;br /&gt;
&lt;br /&gt;
101016 - 101017 白河攀岩&lt;br /&gt;
101025 - 101028 阳朔攀岩&lt;br /&gt;
101029 - 101030 漓江徒步+水上穿越（自带皮划艇）&lt;br /&gt;
&lt;br /&gt;
101225 - 101226 桃源仙谷攀冰&lt;br /&gt;
110101 - 110103 桃源仙谷攀冰&lt;br /&gt;
110108 - 110109 桃源仙谷攀冰&lt;br /&gt;
110122 - 110123 桃源仙谷攀冰&lt;br /&gt;
110206 - 110208 桃源仙谷攀冰&lt;br /&gt;
110219 - 110220 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
110326 - 110327 白河攀岩&lt;br /&gt;
110409 - 110410 白河攀岩&lt;br /&gt;
110416 - 110417 白河攀岩&lt;br /&gt;
110423 - 110424 白河攀岩&lt;br /&gt;
110430 - 110502 郭亮攀岩&lt;br /&gt;
110507 - 110508 白河蜜蜂峡谷攀岩&lt;br /&gt;
110514 - 110515 白河NB峡谷攀岩&lt;br /&gt;
110528 - 110529 扬州 - 兴化 - 镇江&lt;br /&gt;
110604 - 110606 白河NB峡谷攀岩&lt;br /&gt;
110611 - 110612 白河攀岩&lt;br /&gt;
110618 白河老怪攀岩（疯人入院）&lt;br /&gt;
110626 白河老岩场攀岩（红点 slab）&lt;br /&gt;
110627 白河老怪攀岩（分步疯人院）&lt;br /&gt;
110702 - 110703 白河老岩场、老怪攀岩&lt;br /&gt;
110709 白河老怪攀岩&lt;br /&gt;
110813 白河老岩场攀岩（顶绳小裂缝）&lt;br /&gt;
110820 白河老怪攀岩&lt;br /&gt;
110903 白河老怪攀岩&lt;br /&gt;
110917 白河老怪攀岩&lt;br /&gt;
111001 白河小怪攀岩、划艇&lt;br /&gt;
111002 白河老怪攀岩&lt;br /&gt;
111004 - 111006 小五台西沟&lt;br /&gt;
111007 白河老怪攀岩&lt;br /&gt;
111016 白河老怪攀岩&lt;br /&gt;
111023 白河老怪攀岩&lt;br /&gt;
&lt;br /&gt;
111231 - 120101 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
120107 - 120108 桃源仙谷攀冰&lt;br /&gt;
120114 - 120115 桃源仙谷攀冰&lt;br /&gt;
120128 桃源仙谷攀冰&lt;br /&gt;
120204 - 120205 桃源仙谷攀冰&lt;br /&gt;
120211 - 120212 桃源仙谷攀冰&lt;br /&gt;
120218 安家庄结组（40m, 2Ps, WI3，一拖二，领攀）&lt;br /&gt;
&lt;br /&gt;
120331 - 120404 南京、扬州、骑行兴化千岛菜花&lt;br /&gt;
120415 - 120416 白河老怪攀岩（疯人出院，红点疯人院5.12b）&lt;br /&gt;
120421 白河老岩场攀岩（红点11抠）&lt;br /&gt;
120422 白河老岩场攀岩（红点小裂缝）&lt;br /&gt;
120501 白河 NB 峡谷攀岩（红点酒醉的探戈）&lt;br /&gt;
120505 - 120506 白河 NB 峡谷攀岩（红点死硬 5.12b）&lt;br /&gt;
120512 - 120513 白河 NB 峡谷攀岩（分步礼物）&lt;br /&gt;
120519 - 120520 白河 NB 峡谷攀岩（顶绳完攀问柳）&lt;br /&gt;
120526 - 120527 白河 NB 峡谷攀岩（红点问柳 5.12c）&lt;br /&gt;
120602 尖岩抱石&lt;br /&gt;
120603 白河老怪攀岩 (顶绳一箱啤酒）&lt;br /&gt;
120609 - 120610 白河 NB 峡谷攀岩（顶绳双生花后大雨；次日嘎总红点死硬后借绳摸了一把）&lt;br /&gt;
120616 - 120617 白河 NB 峡谷攀岩（顶绳双生花后入夜；次日顶绳完攀双生花后，尝试红点未遂）&lt;br /&gt;
120622 - 120624 白河 NB 峡谷攀岩（红点双生花之姊株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120629 登记结婚&lt;br /&gt;
&lt;br /&gt;
120714 白河 NB 峡谷攀岩（红点双生花之妹株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120818 - 120819 止锚湾海边婚礼&lt;br /&gt;
&lt;br /&gt;
120930 - 121006 贵州紫云格凸攀岩（红点 La Piscineta Cina 5.12c/7b+）&lt;br /&gt;
121215 白河云蒙峡攀冰&lt;br /&gt;
&lt;br /&gt;
130112 白河桃源仙谷攀冰&lt;br /&gt;
130119 白河桃源仙谷攀冰&lt;br /&gt;
130126 白河NB峡谷攀冰&lt;br /&gt;
130127 白河天仙瀑攀冰&lt;br /&gt;
130207 - 130217 泰国甲米攀岩&lt;br /&gt;
&lt;br /&gt;
130404 - 130406 扬州兴化南京&lt;br /&gt;
&lt;br /&gt;
130528 嘎小多和大头出生，满月后嘎小多被我们领养&lt;br /&gt;
&lt;br /&gt;
130609 - 130613 大连&lt;br /&gt;
130619 - 130629 非洲肯尼亚追野生动物 10 日&lt;br /&gt;
130720 - 130721 驼梁两日&lt;br /&gt;
&lt;br /&gt;
131001 - 131006 阳朔攀岩&lt;br /&gt;
140131 - 140205 越南Cat Ba岛攀岩&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2019 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
190601 - 190602 白河精灵谷露天剧场恢复攀岩，如履薄冰 5.10d&lt;br /&gt;
190607 - 190609 端午白河精灵谷露天剧场攀岩、NB 峡谷攀岩（绝唱 5.10b、彩虹 5.11c）&lt;br /&gt;
190615 - 190616 白河精灵谷露天剧场攀岩、小怪攀岩（志愿者 5.10a）&lt;br /&gt;
190622 - 190623 白河精灵谷露天剧场、世外桃源攀岩（别有洞天）&lt;br /&gt;
190624 大雪岩时攀岩馆开年卡&lt;br /&gt;
190627 恢复抱石， 岩时攀岩馆&lt;br /&gt;
190629 - 190630 白河精灵谷世外桃源攀岩，红点别有洞天 5.10d&lt;br /&gt;
190706 - 190707 白河精灵谷世外桃源攀岩&lt;br /&gt;
190713 - 190714 白河精灵谷世外桃源攀岩&lt;br /&gt;
190720 - 190721 白河精灵谷世外桃源攀岩&lt;br /&gt;
190727 - 190728 白河精灵谷世外桃源、NB 峡谷（死硬）攀岩&lt;br /&gt;
190808 - 190811 大连 4 日&lt;br /&gt;
190817 - 190818 白河精灵谷世外桃源攀岩，红点吃瓜群众 5.11c/d&lt;br /&gt;
190831 - 190901 白河精灵谷世外桃源攀岩，开始摸红太阳 5.12a&lt;br /&gt;
190907 - 190908 白河精灵谷世外桃源攀岩，摸红太阳&lt;br /&gt;
190913 - 190915 白河精灵谷世外桃源攀岩，尝试红点红太阳&lt;br /&gt;
190921 - 190922 白河精灵谷世外桃源、露天剧场攀岩，红点红太阳 5.12a，Flash 天生丽质 5.11a、滴水之恩 5.11a；On-Sight 春风化雨 5.11a&lt;br /&gt;
191019 白河精灵谷露天剧场攀岩，红点夜凉如水 5.11a、阳光明媚 5.11c&lt;br /&gt;
191020 白河精灵谷露天剧场攀岩，白河攀岩基金比赛交流活动，顶绳完攀露天剧场所有线路（12 条）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2020 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20200718 白河鸽壁大麻雀攀岩（摸了一把没到顶，难点没分）&lt;br /&gt;
20200725 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200801 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200808 白河鸽壁大麻雀攀岩（两把顶绳，山间流水年度最充沛）&lt;br /&gt;
20200815 白河鸽壁大麻雀攀岩（两把顶绳，山间流水还是很多，多多趴石头上听水参禅：）&lt;br /&gt;
20200822 白河鸽壁大麻雀攀岩（16时左右到岩场，爬了两把顶绳，肉老师生日，拍了一组）&lt;br /&gt;
20200830 白河鸽壁大麻雀攀岩（雨师周六有事，很晚才干到白河）&lt;br /&gt;
20200905 无攀岩，带多多从鸽壁穿越到精灵谷，世外桃源碰到大头玩了会儿（GAGA回大连，雨师牧沙去了天门山。当晚小何布达拉的分享会）&lt;br /&gt;
20200906 白河鸽壁大麻雀攀岩（快到中午和雨师去干了一把，被马蜂蛰到大臂，先锋艰难挂到顶）&lt;br /&gt;
20200912 白河鸽壁大麻雀攀岩（晨起大雨，午后放大晴，云奇美，16时左右到岩场，干了三把顶绳）&lt;br /&gt;
20200913 白河鸽壁大麻雀攀岩（11时左右到岩场，又干了两把顶绳，第一次周末连爬两天）&lt;br /&gt;
20200919 白河鸽壁大麻雀攀岩（做完多多的木床，16时左右到岩场，一把顶绳轻松无脱落到顶，有点意外，辛大王被多只马蜂攻击，战状惨烈。第二把顶绳无脱落吃力到顶）&lt;br /&gt;
20200920 白河鸽壁大麻雀攀岩（12时左右到岩场，一把先锋过了难点后右手力竭 take 了，第二把顺利完成，可惜结束动作略变形，不够从容：）&lt;br /&gt;
20201002 - 04 南京 - 兴化 - 南京&lt;br /&gt;
20201004 - 06 南京 - 大连&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2021 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
202101 白河基金管庄抱石交流活动&lt;br /&gt;
20210215 精灵谷抱石&lt;br /&gt;
20210222 精灵谷抱石&lt;br /&gt;
20210302 精灵谷抱石&lt;br /&gt;
20210315 精灵谷抱石&lt;br /&gt;
20210322 精灵谷抱石&lt;br /&gt;
20210411 精灵谷抱石&lt;br /&gt;
20210418 精灵谷抱石&lt;br /&gt;
202104 多次前往植物园&lt;br /&gt;
20210510 精灵谷抱石&lt;br /&gt;
20210724 流白水抱石&lt;br /&gt;
20210830 白河NB峡谷攀岩&lt;br /&gt;
20210913 白河NB峡谷攀岩&lt;br /&gt;
20210923 大连3日&lt;br /&gt;
10 月，多次前往植物园&lt;br /&gt;
11 月，开始搞驹遛车&lt;br /&gt;
20211129 白河老怪抱石&lt;br /&gt;
12月，搞驹遛车多次前往密云&lt;br /&gt;
20211205 国家博物馆&lt;br /&gt;
20211212 白河怀柔环线，带着贵贵遛 BMW 320LI，9.3L/100km&lt;br /&gt;
20211223 密云射电望远镜阵列环线，三口遛 Benz GLA&lt;br /&gt;
20211224 大望路平安夜抱石交流&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2022 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20220103 禅院找波波炸河虾，炫酸汤鱼&lt;br /&gt;
20220109 接上王大饼看木僵贾主任，潭柘寺王平环线遛车。。。&lt;br /&gt;
20220115 遛大弯找冰上扎营的英雄和蚂蚱，当晚车内露营，清晨车内都零下十度左右，嘎小多瑟瑟发抖&lt;br /&gt;
20220131 白河一日，冰上遛多多，禅院围炉夜话。。。&lt;br /&gt;
20220206 大觉寺一日，遛多多&lt;br /&gt;
20220213 大雪一日，冒雪温榆河遛贵贵，富贵兴奋异常&lt;br /&gt;
20220219 妙峰山涧沟环线遛多多&lt;br /&gt;
20220227 妙峰山涧沟环线遛多多&lt;br /&gt;
20220306 白河一日，精灵谷二楼找波波保护借顶绳爬了几把&lt;br /&gt;
20220313 白河一日，老怪逛逛，老怪先生爬了一把疯人院，完了隧道口看了看新石头&lt;br /&gt;
20220319 妙峰山涧沟环线遛多多，最后的春雪&lt;br /&gt;
20220326 白河老怪攀岩&lt;br /&gt;
20220403 白河赶集，老怪攀岩&lt;br /&gt;
20220409 白河老怪攀岩&lt;br /&gt;
20220416-17 白河老怪攀岩&lt;br /&gt;
20220423 白河老怪攀岩&lt;br /&gt;
20220501 白河老怪攀岩&lt;br /&gt;
20220508 白河老怪攀岩&lt;br /&gt;
20220514 白河老怪攀岩&lt;br /&gt;
20220529 四海镇环线一日&lt;br /&gt;
20220611 白河老怪攀岩&lt;br /&gt;
20220629 Weding 十周年&lt;br /&gt;
20220723-24 白河NB峡谷攀岩&lt;br /&gt;
20221015 白河牛盆峪抱石、拣柴，张家坟打水。。。&lt;br /&gt;
20221113 白河牛盆峪抱石&lt;br /&gt;
20221120 白河塔子峪抱石&lt;br /&gt;
20221126 白河董小姐抱石&lt;br /&gt;
20221204 妙峰山涧沟环线遛多多，下山水边玩了玩户外意式咖啡壶、蒸汽奶泡机，气温零度左右，低温环境体验不好啊&lt;br /&gt;
20221210 GL8 发车北灵山，没上去，路边森林里多多玩了玩雪，斋堂水库观景台汉堡晚餐，当夜嗓子干痒，次日低烧。。。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2023 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20230101 妙峰山登高&lt;br /&gt;
20230121 垡头史坦利新年包饺子&lt;br /&gt;
20230218-20 电驹大连3日&lt;br /&gt;
20230305 牛盆峪抱石&lt;br /&gt;
20230311-12 南京、兴化两日&lt;br /&gt;
20230319 牛盆峪抱石&lt;br /&gt;
20230325 牛盆峪搞钱活动，Model Y 拉垫子，带着贵贵附近转了转&lt;br /&gt;
20230331-0404 南京、兴化，提贴地飞行器回&lt;br /&gt;
20230408 白河天门山抱石&lt;br /&gt;
20230430-0502 贴地飞行大连3日，最后一个工作日早走，夜泊秦皇岛汽车园区，和贵贵睡车后，嘎嘎睡前座，还行&lt;br /&gt;
20230520 白河精灵谷世外桃源攀岩&lt;br /&gt;
20230622 白河流白水抱石，王大饼探亲&lt;br /&gt;
20230708 白河NB峡谷攀岩&lt;br /&gt;
20230715 白河NB峡谷攀岩，红点硬伤 5.13c（左肩拉伤后未完全恢复，当天爬了3、4把，天黑收工前拿下，中间休息了好久。。。）&lt;br /&gt;
20230721-22 乌兰察布两日，观云、追光、火山露营，黄花沟人品爆棚，贵贵（嘎小多多）开心异常。。。&lt;br /&gt;
20230819 白河NB峡谷攀岩&lt;br /&gt;
20230826-27 白河NB峡谷攀岩&lt;br /&gt;
20230909-10 枣庄夹谷山攀岩两日，On-Sight 小天鹅 5.12a&lt;br /&gt;
20230930-1001 白河小怪攀岩，1002 晚机场接昆明回来的韭儿&lt;br /&gt;
20231028 白河老怪攀岩，红点一箱啤酒 5.13a（左肩还是有点虚，当天爬了3把，摩擦力较上周略差，第一把热身，4进5力竭take。。。14:15 左右第三把拿下），完事和老怪先生两口子汇合，天门山抱石&lt;br /&gt;
今年就国庆以后，去了三次老怪，春天为啥没怎么去呢？&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2024 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20240206 春节带贵贵（嘎小多多）大连探亲。20240210（初一）回，大雾封路，10:00 左右上高速，0:47 WJX&lt;br /&gt;
20240211 初二南下探亲，9:40 WJX 出发。沭阳过夜。次日达。&lt;br /&gt;
20240524 南下探亲，19:38 王庆坨，23:57 泊章丘。次日 21:20 返，00:13 泊新沂。&lt;br /&gt;
&lt;br /&gt;
20240606 贵贵（嘎多小多）心包积液抢救&lt;br /&gt;
20240619 下午农大复查，当夜再次因心包积液导致心脏填塞抢救&lt;br /&gt;
20240620 上午出院回家，刚到进家门就又开始坐立不安、站立呼吸，四肢端还凉，观察约一个小时又送医院，又抽心包积液 250ml 近乎血&lt;br /&gt;
20240621 上午状态还好，见到我们还不停摇尾巴，抓门要出氧箱，复查心超，积液又回到 19 日夜里的量，医生建议输血或者手术。心超只见快速增多的积液，未见其他异常。&lt;br /&gt;
          为免控制不住的血性积液再次心脏填塞，被迫冒险开胸做心包切除尝试止血，术中发现右心房肿物，一并切除，手术前后共输 800ml 血&lt;br /&gt;
20240627 复查，催问医生快速化疗之事，答复至少等病理结果出来再说。。。&lt;br /&gt;
20240628 收到切除之心包、右心房外团块的病理结果：犬血管肉瘤 (HSA)。。。&lt;br /&gt;
20240706 永失我们的乖乖（嘎小多多），心头好像被挖走了一块肉。。。&lt;br /&gt;
&lt;br /&gt;
20240929 - 20241003 广西社更穿洞攀岩：&lt;br /&gt;
  Day1：魂在身后追10b (ON)、驯龙高手10a (ON)、神龙摆尾10c (ON)、13m 10d (ON)、全景图11b (ON)&lt;br /&gt;
  Day2：一番炸12b（挂顶前力竭冲坠）、10a (ON)&lt;br /&gt;
  Day3：开场白11b (ON)、放飞自我11d (ON)&lt;br /&gt;
  Day4：稀奇12a (ON)、清风自来12b（第5挂片take）&lt;br /&gt;
  Day5：壮士12a (又是挂顶前Take）、十三膝12c/d（第15挂片Take）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2025 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20250131 - 20250207 福州一日、罗源抱石三日，泉州一日；回程取道杭州撸 60 只哈士奇。驾特斯拉电驹南下，全程4857km&lt;br /&gt;
20250403 - 20250406 大连探亲三日，4/3 13:00 WJX 出发，22时左右夜泊北镇，扎营冻屁股。4/5 滨海路投喂活爹野生梅花鹿。4/6 6:10出发，14:30朝阳休整，检查站大堵车。 &lt;br /&gt;
20250501 - 20250504 淄博刁花峪、石马攀岩四日，梁上君子5.11b (on)、剪刀手5.11c(on)、糖醋鲤鱼5.11a(on)，山高水长5.11c (flash)&lt;br /&gt;
20250505 - 20250506 电驹淄博八陡镇出发，兴化探亲，当晚回，蒙阴附近遭遇大风大雨，夜泊莱芜北服务区&lt;br /&gt;
20250531 - 20250601 龙安攀岩两日，富春小笼5.11c (on)、鸭咩爹 5.11a (on)，Hello Kitty 5.12b（顶绳一把完攀），旅行日记 5.13b/c（顶绳 work 了两把），Yellow Gold 5.13a（顶绳 work 了一把）&lt;br /&gt;
20250607 龙安攀岩一日，鸟窝 5.12d（先锋一把、顶绳一把），旅行日记 5.13b/c（顶绳 work 了一把）&lt;br /&gt;
20250608 白河NB峡谷攀岩一日，红点太阳花 5.12c（爬了四把，大意了）&lt;br /&gt;
20250926 - 20251007 开封半日、咸宁鸣水泉攀岩 5 日（28、29、1、2、3、4）、咸宁千桥一日（30）、芜湖戴店半日（5）、兴化探亲一日（10/6 八字桥夏小虎逝年小酒馆）。全程特斯拉电驹，全程2423km。&lt;br /&gt;
20251012 白河黑石抱石，我只能奔跑 V7&lt;br /&gt;
202510 - 202511 周末老怪战斗&lt;br /&gt;
20251230 建平牛河梁半日&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20260101 - 20260102 大连探亲 2 日&lt;br /&gt;
20260213 - 20260227 春节假期 14 日&lt;br /&gt;
* 13日4:00接上大猴，下午到滨海，撸两下老葛，继续苏州探望三伯，当晚宿苏州。&lt;br /&gt;
* 次日回家。2/16 日晚启程、2/17 下午岳阳半日（岳阳楼、嗦粉） 宿岳阳。&lt;br /&gt;
* 2/18 21:00 到达桂林两江机场接上嘎小辫。&lt;br /&gt;
* 2/19 - 2/25 阳朔白山、雷劈山、思龙山攀岩，flash 多面手 5.11b。&lt;br /&gt;
* 2/25 下午直接从雷劈返程，19:30 到达机场，送别小分队，当晚泊永州。&lt;br /&gt;
* 2/26 永州零陵区 2h，8:30 交警大队充电，香零烟雨印象深刻。&lt;br /&gt;
* 2/26 夜穿大别山余脉，过信阳，宿确山县（3毛3一个的水煎包）&lt;br /&gt;
全程驾特斯拉电驹南下，总行程约 5800km&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* 内蒙太仆寺旗的石条山 [http://bowuguan.hljlr.gov.cn/kpbk/201809/t20180912_266910.htm 中国石柱群 火山岩柱状节理分布图]&lt;br /&gt;
* [https://www.parachuteshop.com/Mirage%20G4.htm MIRAGE parachute] [https://jingyan.baidu.com/article/6079ad0e94668728fe86db76.html 001][http://www.tfskydive.com/AFF.html 002][http://www.xdtsjlb.com/ 003]&lt;br /&gt;
* [https://www.rockskymarket.com/8-containers Containers]&lt;br /&gt;
* [http://www.wingsuitfly.com/ Wingsuit flying]&lt;br /&gt;
* [https://blacksheepadventuresports.com/2018/10/13/comparison-review-sub-9mm-climbing-ropes/ Sub 9mm Climbing Rope Comparison]&lt;br /&gt;
* [https://www.dailyscandinavian.com/climbing-in-the-lofoten-islands-norway/ Climbing in the Lofoten Islands, Norway] https://www.thecrag.com/climbing/norway/lofoten https://outtt.com/en/norway/lofoten/hiking https://outtt.com/en/adventures/8686/djevelporten-fl%C3%B8ya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lofoten]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95</id>
		<title>近年户外活动记录</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95"/>
				<updated>2026-05-06T06:48:20Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 2026 年 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Jack Tan (BH1RBH)，曾用网络ID: comcat / 刀切馒头&lt;br /&gt;
&lt;br /&gt;
== 2019 年以前 ==&lt;br /&gt;
&lt;br /&gt;
2007 年开始一个人背着包在户外乱窜&lt;br /&gt;
&lt;br /&gt;
2009 年底投奔 lvye.org，批量探路、冬季海陀，大五台、小五台穿越扎营，夏季小五台轻装一日五台连穿，小五台重装两日四台...&lt;br /&gt;
&lt;br /&gt;
2010 始开始攀冰，每年的 12月到次年的二月，约有五、六个周末在白河冰壁下度过&lt;br /&gt;
&lt;br /&gt;
2010 夏开始攀岩，着迷且不能自已。12 年岩季始开始丰收，至岩季结束共红点 6 条 5.12 级野外线路，最高难度 5.12d&lt;br /&gt;
&lt;br /&gt;
夏季攀岩冬季攀冰的活动，逐渐固定为一种生活方式&lt;br /&gt;
&lt;br /&gt;
2010 春节独自前往位于甘肃嘉峪关的七一冰川进行冰雪训练，4 月和同伴攀登青海的岗什卡雪峰，10月攀登四川理县的半脊峰&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[小五台一日五台连穿]] 2010-06-26&lt;br /&gt;
* [[岗什卡印象]]  ---- 初试技术攀登 2010-04-04&lt;br /&gt;
* [[白河 Beginner 初试结组攀登]] 2010-09-11&lt;br /&gt;
* [[完美心情笔记]] 2010-09-23&lt;br /&gt;
* [[半脊峰攀登笔记]] 2010-10-02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不玩海拔，只玩技术，偏执过程&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
091031 - 091101 后山铺 - 豪宅 - 天仙瀑两日（卡尔松）&lt;br /&gt;
091114 柏峪 - 黄草梁 - 七座楼往返（卡尔松）&lt;br /&gt;
091121 - 091122 大五台两日（soarrow）&lt;br /&gt;
091206 人头山探路（789ijn）&lt;br /&gt;
091218 - 091219 大海陀村夜袭 - 鞍部扎营 - 西大庄科 （soarrow）&lt;br /&gt;
091220 上峪 - 四干顶 - 白龙潭（789ijn）&lt;br /&gt;
&lt;br /&gt;
100101 - 100102 小五台两日，西台往返 （约伴，老大海，风中的大海，南子，壁虎，三脚猫，soarrow，客栈）&lt;br /&gt;
100109 - 100110 珍珠湖冰面扎营（soarrow）&lt;br /&gt;
100117 小五台北二往返（贺兰月明）&lt;br /&gt;
100130 - 100131 小五台两日，北台往返（约伴，贺兰月明，boater，混沌，mallow）&lt;br /&gt;
&lt;br /&gt;
100206 - 100207 桃园仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
100217 - 100219 七一冰川 (solo, 5031/5150)&lt;br /&gt;
&lt;br /&gt;
100227 - 100228 安家庄攀冰&lt;br /&gt;
100307 安家庄攀冰&lt;br /&gt;
100313 小五台北东未遂（约伴，boater，贺兰月明，花鼎，GAGA，客栈）&lt;br /&gt;
100320 - 100321 安家庄攀冰&lt;br /&gt;
&lt;br /&gt;
100404 - 100405 岗什卡（客栈, GAGA, soarrow; 4860/5254）&lt;br /&gt;
&lt;br /&gt;
每周四晚开始抱石&lt;br /&gt;
100424 - 100425 圆台两日（soarrow）&lt;br /&gt;
100522 - 100523 海陀两日（约伴）&lt;br /&gt;
100529 大香巴拉（领队组）&lt;br /&gt;
100605 - 100606 后河海陀两日（领队组）&lt;br /&gt;
&lt;br /&gt;
100619 - 100620 白河攀岩（5.10a）&lt;br /&gt;
100626 小五台一日五台连穿（领队组）&lt;br /&gt;
100710 - 100711 小五台两日（花鼎）&lt;br /&gt;
100717 - 100718 小五台两日四台（花鼎）&lt;br /&gt;
100724 - 100725 白河攀岩（On-Sight 志愿者，传统小怪双裂缝）&lt;br /&gt;
100731 - 100801 白河攀岩（红点 mini 肉塞）&lt;br /&gt;
100806 - 100807 白河攀岩（先锋没尽头）&lt;br /&gt;
100814 - 100815 白河攀岩（红点天黑黑）&lt;br /&gt;
100822 白河攀岩（先锋 All In One）&lt;br /&gt;
100828 七道沟 - 云蒙山 - 黑龙秘径重装一日（伙同大雪，久点，河马等）&lt;br /&gt;
100829 白河攀岩（顶绳小怪，分步完成）&lt;br /&gt;
100904 - 100905 白河攀岩（红点无尽头，顶绳完攀小怪）&lt;br /&gt;
100911 白河攀岩（领攀 Beginner，与 GAGA 结组） &lt;br /&gt;
100912 白河攀岩（先锋小怪）&lt;br /&gt;
100922 白河攀岩（红点小怪）&lt;br /&gt;
100923 白河攀岩（领攀完美心情，与大雪封山结组） &lt;br /&gt;
&lt;br /&gt;
101002 - 101006 半脊峰（与客栈, GAGA 结组; 5306/5430） &lt;br /&gt;
&lt;br /&gt;
101016 - 101017 白河攀岩&lt;br /&gt;
101025 - 101028 阳朔攀岩&lt;br /&gt;
101029 - 101030 漓江徒步+水上穿越（自带皮划艇）&lt;br /&gt;
&lt;br /&gt;
101225 - 101226 桃源仙谷攀冰&lt;br /&gt;
110101 - 110103 桃源仙谷攀冰&lt;br /&gt;
110108 - 110109 桃源仙谷攀冰&lt;br /&gt;
110122 - 110123 桃源仙谷攀冰&lt;br /&gt;
110206 - 110208 桃源仙谷攀冰&lt;br /&gt;
110219 - 110220 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
110326 - 110327 白河攀岩&lt;br /&gt;
110409 - 110410 白河攀岩&lt;br /&gt;
110416 - 110417 白河攀岩&lt;br /&gt;
110423 - 110424 白河攀岩&lt;br /&gt;
110430 - 110502 郭亮攀岩&lt;br /&gt;
110507 - 110508 白河蜜蜂峡谷攀岩&lt;br /&gt;
110514 - 110515 白河NB峡谷攀岩&lt;br /&gt;
110528 - 110529 扬州 - 兴化 - 镇江&lt;br /&gt;
110604 - 110606 白河NB峡谷攀岩&lt;br /&gt;
110611 - 110612 白河攀岩&lt;br /&gt;
110618 白河老怪攀岩（疯人入院）&lt;br /&gt;
110626 白河老岩场攀岩（红点 slab）&lt;br /&gt;
110627 白河老怪攀岩（分步疯人院）&lt;br /&gt;
110702 - 110703 白河老岩场、老怪攀岩&lt;br /&gt;
110709 白河老怪攀岩&lt;br /&gt;
110813 白河老岩场攀岩（顶绳小裂缝）&lt;br /&gt;
110820 白河老怪攀岩&lt;br /&gt;
110903 白河老怪攀岩&lt;br /&gt;
110917 白河老怪攀岩&lt;br /&gt;
111001 白河小怪攀岩、划艇&lt;br /&gt;
111002 白河老怪攀岩&lt;br /&gt;
111004 - 111006 小五台西沟&lt;br /&gt;
111007 白河老怪攀岩&lt;br /&gt;
111016 白河老怪攀岩&lt;br /&gt;
111023 白河老怪攀岩&lt;br /&gt;
&lt;br /&gt;
111231 - 120101 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
120107 - 120108 桃源仙谷攀冰&lt;br /&gt;
120114 - 120115 桃源仙谷攀冰&lt;br /&gt;
120128 桃源仙谷攀冰&lt;br /&gt;
120204 - 120205 桃源仙谷攀冰&lt;br /&gt;
120211 - 120212 桃源仙谷攀冰&lt;br /&gt;
120218 安家庄结组（40m, 2Ps, WI3，一拖二，领攀）&lt;br /&gt;
&lt;br /&gt;
120331 - 120404 南京、扬州、骑行兴化千岛菜花&lt;br /&gt;
120415 - 120416 白河老怪攀岩（疯人出院，红点疯人院5.12b）&lt;br /&gt;
120421 白河老岩场攀岩（红点11抠）&lt;br /&gt;
120422 白河老岩场攀岩（红点小裂缝）&lt;br /&gt;
120501 白河 NB 峡谷攀岩（红点酒醉的探戈）&lt;br /&gt;
120505 - 120506 白河 NB 峡谷攀岩（红点死硬 5.12b）&lt;br /&gt;
120512 - 120513 白河 NB 峡谷攀岩（分步礼物）&lt;br /&gt;
120519 - 120520 白河 NB 峡谷攀岩（顶绳完攀问柳）&lt;br /&gt;
120526 - 120527 白河 NB 峡谷攀岩（红点问柳 5.12c）&lt;br /&gt;
120602 尖岩抱石&lt;br /&gt;
120603 白河老怪攀岩 (顶绳一箱啤酒）&lt;br /&gt;
120609 - 120610 白河 NB 峡谷攀岩（顶绳双生花后大雨；次日嘎总红点死硬后借绳摸了一把）&lt;br /&gt;
120616 - 120617 白河 NB 峡谷攀岩（顶绳双生花后入夜；次日顶绳完攀双生花后，尝试红点未遂）&lt;br /&gt;
120622 - 120624 白河 NB 峡谷攀岩（红点双生花之姊株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120629 登记结婚&lt;br /&gt;
&lt;br /&gt;
120714 白河 NB 峡谷攀岩（红点双生花之妹株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120818 - 120819 止锚湾海边婚礼&lt;br /&gt;
&lt;br /&gt;
120930 - 121006 贵州紫云格凸攀岩（红点 La Piscineta Cina 5.12c/7b+）&lt;br /&gt;
121215 白河云蒙峡攀冰&lt;br /&gt;
&lt;br /&gt;
130112 白河桃源仙谷攀冰&lt;br /&gt;
130119 白河桃源仙谷攀冰&lt;br /&gt;
130126 白河NB峡谷攀冰&lt;br /&gt;
130127 白河天仙瀑攀冰&lt;br /&gt;
130207 - 130217 泰国甲米攀岩&lt;br /&gt;
&lt;br /&gt;
130404 - 130406 扬州兴化南京&lt;br /&gt;
&lt;br /&gt;
130528 嘎小多和大头出生，满月后嘎小多被我们领养&lt;br /&gt;
&lt;br /&gt;
130609 - 130613 大连&lt;br /&gt;
130619 - 130629 非洲肯尼亚追野生动物 10 日&lt;br /&gt;
130720 - 130721 驼梁两日&lt;br /&gt;
&lt;br /&gt;
131001 - 131006 阳朔攀岩&lt;br /&gt;
140131 - 140205 越南Cat Ba岛攀岩&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2019 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
190601 - 190602 白河精灵谷露天剧场恢复攀岩，如履薄冰 5.10d&lt;br /&gt;
190607 - 190609 端午白河精灵谷露天剧场攀岩、NB 峡谷攀岩（绝唱 5.10b、彩虹 5.11c）&lt;br /&gt;
190615 - 190616 白河精灵谷露天剧场攀岩、小怪攀岩（志愿者 5.10a）&lt;br /&gt;
190622 - 190623 白河精灵谷露天剧场、世外桃源攀岩（别有洞天）&lt;br /&gt;
190624 大雪岩时攀岩馆开年卡&lt;br /&gt;
190627 恢复抱石， 岩时攀岩馆&lt;br /&gt;
190629 - 190630 白河精灵谷世外桃源攀岩，红点别有洞天 5.10d&lt;br /&gt;
190706 - 190707 白河精灵谷世外桃源攀岩&lt;br /&gt;
190713 - 190714 白河精灵谷世外桃源攀岩&lt;br /&gt;
190720 - 190721 白河精灵谷世外桃源攀岩&lt;br /&gt;
190727 - 190728 白河精灵谷世外桃源、NB 峡谷（死硬）攀岩&lt;br /&gt;
190808 - 190811 大连 4 日&lt;br /&gt;
190817 - 190818 白河精灵谷世外桃源攀岩，红点吃瓜群众 5.11c/d&lt;br /&gt;
190831 - 190901 白河精灵谷世外桃源攀岩，开始摸红太阳 5.12a&lt;br /&gt;
190907 - 190908 白河精灵谷世外桃源攀岩，摸红太阳&lt;br /&gt;
190913 - 190915 白河精灵谷世外桃源攀岩，尝试红点红太阳&lt;br /&gt;
190921 - 190922 白河精灵谷世外桃源、露天剧场攀岩，红点红太阳 5.12a，Flash 天生丽质 5.11a、滴水之恩 5.11a；On-Sight 春风化雨 5.11a&lt;br /&gt;
191019 白河精灵谷露天剧场攀岩，红点夜凉如水 5.11a、阳光明媚 5.11c&lt;br /&gt;
191020 白河精灵谷露天剧场攀岩，白河攀岩基金比赛交流活动，顶绳完攀露天剧场所有线路（12 条）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2020 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20200718 白河鸽壁大麻雀攀岩（摸了一把没到顶，难点没分）&lt;br /&gt;
20200725 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200801 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200808 白河鸽壁大麻雀攀岩（两把顶绳，山间流水年度最充沛）&lt;br /&gt;
20200815 白河鸽壁大麻雀攀岩（两把顶绳，山间流水还是很多，多多趴石头上听水参禅：）&lt;br /&gt;
20200822 白河鸽壁大麻雀攀岩（16时左右到岩场，爬了两把顶绳，肉老师生日，拍了一组）&lt;br /&gt;
20200830 白河鸽壁大麻雀攀岩（雨师周六有事，很晚才干到白河）&lt;br /&gt;
20200905 无攀岩，带多多从鸽壁穿越到精灵谷，世外桃源碰到大头玩了会儿（GAGA回大连，雨师牧沙去了天门山。当晚小何布达拉的分享会）&lt;br /&gt;
20200906 白河鸽壁大麻雀攀岩（快到中午和雨师去干了一把，被马蜂蛰到大臂，先锋艰难挂到顶）&lt;br /&gt;
20200912 白河鸽壁大麻雀攀岩（晨起大雨，午后放大晴，云奇美，16时左右到岩场，干了三把顶绳）&lt;br /&gt;
20200913 白河鸽壁大麻雀攀岩（11时左右到岩场，又干了两把顶绳，第一次周末连爬两天）&lt;br /&gt;
20200919 白河鸽壁大麻雀攀岩（做完多多的木床，16时左右到岩场，一把顶绳轻松无脱落到顶，有点意外，辛大王被多只马蜂攻击，战状惨烈。第二把顶绳无脱落吃力到顶）&lt;br /&gt;
20200920 白河鸽壁大麻雀攀岩（12时左右到岩场，一把先锋过了难点后右手力竭 take 了，第二把顺利完成，可惜结束动作略变形，不够从容：）&lt;br /&gt;
20201002 - 04 南京 - 兴化 - 南京&lt;br /&gt;
20201004 - 06 南京 - 大连&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2021 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
202101 白河基金管庄抱石交流活动&lt;br /&gt;
20210215 精灵谷抱石&lt;br /&gt;
20210222 精灵谷抱石&lt;br /&gt;
20210302 精灵谷抱石&lt;br /&gt;
20210315 精灵谷抱石&lt;br /&gt;
20210322 精灵谷抱石&lt;br /&gt;
20210411 精灵谷抱石&lt;br /&gt;
20210418 精灵谷抱石&lt;br /&gt;
202104 多次前往植物园&lt;br /&gt;
20210510 精灵谷抱石&lt;br /&gt;
20210724 流白水抱石&lt;br /&gt;
20210830 白河NB峡谷攀岩&lt;br /&gt;
20210913 白河NB峡谷攀岩&lt;br /&gt;
20210923 大连3日&lt;br /&gt;
10 月，多次前往植物园&lt;br /&gt;
11 月，开始搞驹遛车&lt;br /&gt;
20211129 白河老怪抱石&lt;br /&gt;
12月，搞驹遛车多次前往密云&lt;br /&gt;
20211205 国家博物馆&lt;br /&gt;
20211212 白河怀柔环线，带着贵贵遛 BMW 320LI，9.3L/100km&lt;br /&gt;
20211223 密云射电望远镜阵列环线，三口遛 Benz GLA&lt;br /&gt;
20211224 大望路平安夜抱石交流&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2022 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20220103 禅院找波波炸河虾，炫酸汤鱼&lt;br /&gt;
20220109 接上王大饼看木僵贾主任，潭柘寺王平环线遛车。。。&lt;br /&gt;
20220115 遛大弯找冰上扎营的英雄和蚂蚱，当晚车内露营，清晨车内都零下十度左右，嘎小多瑟瑟发抖&lt;br /&gt;
20220131 白河一日，冰上遛多多，禅院围炉夜话。。。&lt;br /&gt;
20220206 大觉寺一日，遛多多&lt;br /&gt;
20220213 大雪一日，冒雪温榆河遛贵贵，富贵兴奋异常&lt;br /&gt;
20220219 妙峰山涧沟环线遛多多&lt;br /&gt;
20220227 妙峰山涧沟环线遛多多&lt;br /&gt;
20220306 白河一日，精灵谷二楼找波波保护借顶绳爬了几把&lt;br /&gt;
20220313 白河一日，老怪逛逛，老怪先生爬了一把疯人院，完了隧道口看了看新石头&lt;br /&gt;
20220319 妙峰山涧沟环线遛多多，最后的春雪&lt;br /&gt;
20220326 白河老怪攀岩&lt;br /&gt;
20220403 白河赶集，老怪攀岩&lt;br /&gt;
20220409 白河老怪攀岩&lt;br /&gt;
20220416-17 白河老怪攀岩&lt;br /&gt;
20220423 白河老怪攀岩&lt;br /&gt;
20220501 白河老怪攀岩&lt;br /&gt;
20220508 白河老怪攀岩&lt;br /&gt;
20220514 白河老怪攀岩&lt;br /&gt;
20220529 四海镇环线一日&lt;br /&gt;
20220611 白河老怪攀岩&lt;br /&gt;
20220629 Weding 十周年&lt;br /&gt;
20220723-24 白河NB峡谷攀岩&lt;br /&gt;
20221015 白河牛盆峪抱石、拣柴，张家坟打水。。。&lt;br /&gt;
20221113 白河牛盆峪抱石&lt;br /&gt;
20221120 白河塔子峪抱石&lt;br /&gt;
20221126 白河董小姐抱石&lt;br /&gt;
20221204 妙峰山涧沟环线遛多多，下山水边玩了玩户外意式咖啡壶、蒸汽奶泡机，气温零度左右，低温环境体验不好啊&lt;br /&gt;
20221210 GL8 发车北灵山，没上去，路边森林里多多玩了玩雪，斋堂水库观景台汉堡晚餐，当夜嗓子干痒，次日低烧。。。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2023 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20230101 妙峰山登高&lt;br /&gt;
20230121 垡头史坦利新年包饺子&lt;br /&gt;
20230218-20 电驹大连3日&lt;br /&gt;
20230305 牛盆峪抱石&lt;br /&gt;
20230311-12 南京、兴化两日&lt;br /&gt;
20230319 牛盆峪抱石&lt;br /&gt;
20230325 牛盆峪搞钱活动，Model Y 拉垫子，带着贵贵附近转了转&lt;br /&gt;
20230331-0404 南京、兴化，提贴地飞行器回&lt;br /&gt;
20230408 白河天门山抱石&lt;br /&gt;
20230430-0502 贴地飞行大连3日，最后一个工作日早走，夜泊秦皇岛汽车园区，和贵贵睡车后，嘎嘎睡前座，还行&lt;br /&gt;
20230520 白河精灵谷世外桃源攀岩&lt;br /&gt;
20230622 白河流白水抱石，王大饼探亲&lt;br /&gt;
20230708 白河NB峡谷攀岩&lt;br /&gt;
20230715 白河NB峡谷攀岩，红点硬伤 5.13c（左肩拉伤后未完全恢复，当天爬了3、4把，天黑收工前拿下，中间休息了好久。。。）&lt;br /&gt;
20230721-22 乌兰察布两日，观云、追光、火山露营，黄花沟人品爆棚，贵贵（嘎小多多）开心异常。。。&lt;br /&gt;
20230819 白河NB峡谷攀岩&lt;br /&gt;
20230826-27 白河NB峡谷攀岩&lt;br /&gt;
20230909-10 枣庄夹谷山攀岩两日，On-Sight 小天鹅 5.12a&lt;br /&gt;
20230930-1001 白河小怪攀岩，1002 晚机场接昆明回来的韭儿&lt;br /&gt;
20231028 白河老怪攀岩，红点一箱啤酒 5.13a（左肩还是有点虚，当天爬了3把，摩擦力较上周略差，第一把热身，4进5力竭take。。。14:15 左右第三把拿下），完事和老怪先生两口子汇合，天门山抱石&lt;br /&gt;
今年就国庆以后，去了三次老怪，春天为啥没怎么去呢？&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2024 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20240206 春节带贵贵（嘎小多多）大连探亲。20240210（初一）回，大雾封路，10:00 左右上高速，0:47 WJX&lt;br /&gt;
20240211 初二南下探亲，9:40 WJX 出发。沭阳过夜。次日达。&lt;br /&gt;
20240524 南下探亲，19:38 王庆坨，23:57 泊章丘。次日 21:20 返，00:13 泊新沂。&lt;br /&gt;
&lt;br /&gt;
20240606 贵贵（嘎多小多）心包积液抢救&lt;br /&gt;
20240619 下午农大复查，当夜再次因心包积液导致心脏填塞抢救&lt;br /&gt;
20240620 上午出院回家，刚到进家门就又开始坐立不安、站立呼吸，四肢端还凉，观察约一个小时又送医院，又抽心包积液 250ml 近乎血&lt;br /&gt;
20240621 上午状态还好，见到我们还不停摇尾巴，抓门要出氧箱，复查心超，积液又回到 19 日夜里的量，医生建议输血或者手术。心超只见快速增多的积液，未见其他异常。&lt;br /&gt;
          为免控制不住的血性积液再次心脏填塞，被迫冒险开胸做心包切除尝试止血，术中发现右心房肿物，一并切除，手术前后共输 800ml 血&lt;br /&gt;
20240627 复查，催问医生快速化疗之事，答复至少等病理结果出来再说。。。&lt;br /&gt;
20240628 收到切除之心包、右心房外团块的病理结果：犬血管肉瘤 (HSA)。。。&lt;br /&gt;
20240706 永失我们的乖乖（嘎小多多），心头好像被挖走了一块肉。。。&lt;br /&gt;
&lt;br /&gt;
20240929 - 20241003 广西社更穿洞攀岩：&lt;br /&gt;
  Day1：魂在身后追10b (ON)、驯龙高手10a (ON)、神龙摆尾10c (ON)、13m 10d (ON)、全景图11b (ON)&lt;br /&gt;
  Day2：一番炸12b（挂顶前力竭冲坠）、10a (ON)&lt;br /&gt;
  Day3：开场白11b (ON)、放飞自我11d (ON)&lt;br /&gt;
  Day4：稀奇12a (ON)、清风自来12b（第5挂片take）&lt;br /&gt;
  Day5：壮士12a (又是挂顶前Take）、十三膝12c/d（第15挂片Take）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2025 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20250131 - 20250207 福州一日、罗源抱石三日，泉州一日；回程取道杭州撸 60 只哈士奇。驾特斯拉电驹南下，全程4857km&lt;br /&gt;
20250403 - 20250406 大连探亲三日，4/3 13:00 WJX 出发，22时左右夜泊北镇，扎营冻屁股。4/5 滨海路投喂活爹野生梅花鹿。4/6 6:10出发，14:30朝阳休整，检查站大堵车。 &lt;br /&gt;
20250501 - 20250504 淄博刁花峪、石马攀岩四日，梁上君子5.11b (on)、剪刀手5.11c(on)、糖醋鲤鱼5.11a(on)，山高水长5.11c (flash)&lt;br /&gt;
20250505 - 20250506 电驹淄博八陡镇出发，兴化探亲，当晚回，蒙阴附近遭遇大风大雨，夜泊莱芜北服务区&lt;br /&gt;
20250531 - 20250601 龙安攀岩两日，富春小笼5.11c (on)、鸭咩爹 5.11a (on)，Hello Kitty 5.12b（顶绳一把完攀），旅行日记 5.13b/c（顶绳 work 了两把），Yellow Gold 5.13a（顶绳 work 了一把）&lt;br /&gt;
20250607 龙安攀岩一日，鸟窝 5.12d（先锋一把、顶绳一把），旅行日记 5.13b/c（顶绳 work 了一把）&lt;br /&gt;
20250608 白河NB峡谷攀岩一日，红点太阳花 5.12c（爬了四把，大意了）&lt;br /&gt;
20250926 - 20251007 开封半日、咸宁鸣水泉攀岩 5 日（28、29、1、2、3、4）、咸宁千桥一日（30）、芜湖戴店半日（5）、兴化探亲一日（10/6 八字桥夏小虎逝年小酒馆）。全程特斯拉电驹，全程2423km。&lt;br /&gt;
20251012 白河黑石抱石，我只能奔跑 V7&lt;br /&gt;
202510 - 202511 周末老怪战斗&lt;br /&gt;
20251230 建平牛河梁半日&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20260101 - 20260102 大连探亲 2 日&lt;br /&gt;
20260213 - 20260227 春节假期 14 日&lt;br /&gt;
* 13日4:00接上大猴，下午到滨海，撸两下老葛，继续苏州探望三伯，当晚宿苏州。&lt;br /&gt;
* 次日回家。2/16 日晚启程、2/17 下午岳阳半日（岳阳楼、嗦粉） 宿岳阳。&lt;br /&gt;
* 2/18 21:00 到达桂林两江机场接上嘎小辫。&lt;br /&gt;
* 2/19 - 2/25 阳朔白山、雷劈山、思龙山攀岩，flash 多面手 5.11b。驾特斯拉电驹南下，总行程约 5800km&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* 内蒙太仆寺旗的石条山 [http://bowuguan.hljlr.gov.cn/kpbk/201809/t20180912_266910.htm 中国石柱群 火山岩柱状节理分布图]&lt;br /&gt;
* [https://www.parachuteshop.com/Mirage%20G4.htm MIRAGE parachute] [https://jingyan.baidu.com/article/6079ad0e94668728fe86db76.html 001][http://www.tfskydive.com/AFF.html 002][http://www.xdtsjlb.com/ 003]&lt;br /&gt;
* [https://www.rockskymarket.com/8-containers Containers]&lt;br /&gt;
* [http://www.wingsuitfly.com/ Wingsuit flying]&lt;br /&gt;
* [https://blacksheepadventuresports.com/2018/10/13/comparison-review-sub-9mm-climbing-ropes/ Sub 9mm Climbing Rope Comparison]&lt;br /&gt;
* [https://www.dailyscandinavian.com/climbing-in-the-lofoten-islands-norway/ Climbing in the Lofoten Islands, Norway] https://www.thecrag.com/climbing/norway/lofoten https://outtt.com/en/norway/lofoten/hiking https://outtt.com/en/adventures/8686/djevelporten-fl%C3%B8ya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lofoten]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95</id>
		<title>近年户外活动记录</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E8%BF%91%E5%B9%B4%E6%88%B7%E5%A4%96%E6%B4%BB%E5%8A%A8%E8%AE%B0%E5%BD%95"/>
				<updated>2026-05-06T06:46:53Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 2025 年 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Jack Tan (BH1RBH)，曾用网络ID: comcat / 刀切馒头&lt;br /&gt;
&lt;br /&gt;
== 2019 年以前 ==&lt;br /&gt;
&lt;br /&gt;
2007 年开始一个人背着包在户外乱窜&lt;br /&gt;
&lt;br /&gt;
2009 年底投奔 lvye.org，批量探路、冬季海陀，大五台、小五台穿越扎营，夏季小五台轻装一日五台连穿，小五台重装两日四台...&lt;br /&gt;
&lt;br /&gt;
2010 始开始攀冰，每年的 12月到次年的二月，约有五、六个周末在白河冰壁下度过&lt;br /&gt;
&lt;br /&gt;
2010 夏开始攀岩，着迷且不能自已。12 年岩季始开始丰收，至岩季结束共红点 6 条 5.12 级野外线路，最高难度 5.12d&lt;br /&gt;
&lt;br /&gt;
夏季攀岩冬季攀冰的活动，逐渐固定为一种生活方式&lt;br /&gt;
&lt;br /&gt;
2010 春节独自前往位于甘肃嘉峪关的七一冰川进行冰雪训练，4 月和同伴攀登青海的岗什卡雪峰，10月攀登四川理县的半脊峰&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[小五台一日五台连穿]] 2010-06-26&lt;br /&gt;
* [[岗什卡印象]]  ---- 初试技术攀登 2010-04-04&lt;br /&gt;
* [[白河 Beginner 初试结组攀登]] 2010-09-11&lt;br /&gt;
* [[完美心情笔记]] 2010-09-23&lt;br /&gt;
* [[半脊峰攀登笔记]] 2010-10-02&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不玩海拔，只玩技术，偏执过程&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
091031 - 091101 后山铺 - 豪宅 - 天仙瀑两日（卡尔松）&lt;br /&gt;
091114 柏峪 - 黄草梁 - 七座楼往返（卡尔松）&lt;br /&gt;
091121 - 091122 大五台两日（soarrow）&lt;br /&gt;
091206 人头山探路（789ijn）&lt;br /&gt;
091218 - 091219 大海陀村夜袭 - 鞍部扎营 - 西大庄科 （soarrow）&lt;br /&gt;
091220 上峪 - 四干顶 - 白龙潭（789ijn）&lt;br /&gt;
&lt;br /&gt;
100101 - 100102 小五台两日，西台往返 （约伴，老大海，风中的大海，南子，壁虎，三脚猫，soarrow，客栈）&lt;br /&gt;
100109 - 100110 珍珠湖冰面扎营（soarrow）&lt;br /&gt;
100117 小五台北二往返（贺兰月明）&lt;br /&gt;
100130 - 100131 小五台两日，北台往返（约伴，贺兰月明，boater，混沌，mallow）&lt;br /&gt;
&lt;br /&gt;
100206 - 100207 桃园仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
100217 - 100219 七一冰川 (solo, 5031/5150)&lt;br /&gt;
&lt;br /&gt;
100227 - 100228 安家庄攀冰&lt;br /&gt;
100307 安家庄攀冰&lt;br /&gt;
100313 小五台北东未遂（约伴，boater，贺兰月明，花鼎，GAGA，客栈）&lt;br /&gt;
100320 - 100321 安家庄攀冰&lt;br /&gt;
&lt;br /&gt;
100404 - 100405 岗什卡（客栈, GAGA, soarrow; 4860/5254）&lt;br /&gt;
&lt;br /&gt;
每周四晚开始抱石&lt;br /&gt;
100424 - 100425 圆台两日（soarrow）&lt;br /&gt;
100522 - 100523 海陀两日（约伴）&lt;br /&gt;
100529 大香巴拉（领队组）&lt;br /&gt;
100605 - 100606 后河海陀两日（领队组）&lt;br /&gt;
&lt;br /&gt;
100619 - 100620 白河攀岩（5.10a）&lt;br /&gt;
100626 小五台一日五台连穿（领队组）&lt;br /&gt;
100710 - 100711 小五台两日（花鼎）&lt;br /&gt;
100717 - 100718 小五台两日四台（花鼎）&lt;br /&gt;
100724 - 100725 白河攀岩（On-Sight 志愿者，传统小怪双裂缝）&lt;br /&gt;
100731 - 100801 白河攀岩（红点 mini 肉塞）&lt;br /&gt;
100806 - 100807 白河攀岩（先锋没尽头）&lt;br /&gt;
100814 - 100815 白河攀岩（红点天黑黑）&lt;br /&gt;
100822 白河攀岩（先锋 All In One）&lt;br /&gt;
100828 七道沟 - 云蒙山 - 黑龙秘径重装一日（伙同大雪，久点，河马等）&lt;br /&gt;
100829 白河攀岩（顶绳小怪，分步完成）&lt;br /&gt;
100904 - 100905 白河攀岩（红点无尽头，顶绳完攀小怪）&lt;br /&gt;
100911 白河攀岩（领攀 Beginner，与 GAGA 结组） &lt;br /&gt;
100912 白河攀岩（先锋小怪）&lt;br /&gt;
100922 白河攀岩（红点小怪）&lt;br /&gt;
100923 白河攀岩（领攀完美心情，与大雪封山结组） &lt;br /&gt;
&lt;br /&gt;
101002 - 101006 半脊峰（与客栈, GAGA 结组; 5306/5430） &lt;br /&gt;
&lt;br /&gt;
101016 - 101017 白河攀岩&lt;br /&gt;
101025 - 101028 阳朔攀岩&lt;br /&gt;
101029 - 101030 漓江徒步+水上穿越（自带皮划艇）&lt;br /&gt;
&lt;br /&gt;
101225 - 101226 桃源仙谷攀冰&lt;br /&gt;
110101 - 110103 桃源仙谷攀冰&lt;br /&gt;
110108 - 110109 桃源仙谷攀冰&lt;br /&gt;
110122 - 110123 桃源仙谷攀冰&lt;br /&gt;
110206 - 110208 桃源仙谷攀冰&lt;br /&gt;
110219 - 110220 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
110326 - 110327 白河攀岩&lt;br /&gt;
110409 - 110410 白河攀岩&lt;br /&gt;
110416 - 110417 白河攀岩&lt;br /&gt;
110423 - 110424 白河攀岩&lt;br /&gt;
110430 - 110502 郭亮攀岩&lt;br /&gt;
110507 - 110508 白河蜜蜂峡谷攀岩&lt;br /&gt;
110514 - 110515 白河NB峡谷攀岩&lt;br /&gt;
110528 - 110529 扬州 - 兴化 - 镇江&lt;br /&gt;
110604 - 110606 白河NB峡谷攀岩&lt;br /&gt;
110611 - 110612 白河攀岩&lt;br /&gt;
110618 白河老怪攀岩（疯人入院）&lt;br /&gt;
110626 白河老岩场攀岩（红点 slab）&lt;br /&gt;
110627 白河老怪攀岩（分步疯人院）&lt;br /&gt;
110702 - 110703 白河老岩场、老怪攀岩&lt;br /&gt;
110709 白河老怪攀岩&lt;br /&gt;
110813 白河老岩场攀岩（顶绳小裂缝）&lt;br /&gt;
110820 白河老怪攀岩&lt;br /&gt;
110903 白河老怪攀岩&lt;br /&gt;
110917 白河老怪攀岩&lt;br /&gt;
111001 白河小怪攀岩、划艇&lt;br /&gt;
111002 白河老怪攀岩&lt;br /&gt;
111004 - 111006 小五台西沟&lt;br /&gt;
111007 白河老怪攀岩&lt;br /&gt;
111016 白河老怪攀岩&lt;br /&gt;
111023 白河老怪攀岩&lt;br /&gt;
&lt;br /&gt;
111231 - 120101 桃源仙谷攀冰&lt;br /&gt;
&lt;br /&gt;
120107 - 120108 桃源仙谷攀冰&lt;br /&gt;
120114 - 120115 桃源仙谷攀冰&lt;br /&gt;
120128 桃源仙谷攀冰&lt;br /&gt;
120204 - 120205 桃源仙谷攀冰&lt;br /&gt;
120211 - 120212 桃源仙谷攀冰&lt;br /&gt;
120218 安家庄结组（40m, 2Ps, WI3，一拖二，领攀）&lt;br /&gt;
&lt;br /&gt;
120331 - 120404 南京、扬州、骑行兴化千岛菜花&lt;br /&gt;
120415 - 120416 白河老怪攀岩（疯人出院，红点疯人院5.12b）&lt;br /&gt;
120421 白河老岩场攀岩（红点11抠）&lt;br /&gt;
120422 白河老岩场攀岩（红点小裂缝）&lt;br /&gt;
120501 白河 NB 峡谷攀岩（红点酒醉的探戈）&lt;br /&gt;
120505 - 120506 白河 NB 峡谷攀岩（红点死硬 5.12b）&lt;br /&gt;
120512 - 120513 白河 NB 峡谷攀岩（分步礼物）&lt;br /&gt;
120519 - 120520 白河 NB 峡谷攀岩（顶绳完攀问柳）&lt;br /&gt;
120526 - 120527 白河 NB 峡谷攀岩（红点问柳 5.12c）&lt;br /&gt;
120602 尖岩抱石&lt;br /&gt;
120603 白河老怪攀岩 (顶绳一箱啤酒）&lt;br /&gt;
120609 - 120610 白河 NB 峡谷攀岩（顶绳双生花后大雨；次日嘎总红点死硬后借绳摸了一把）&lt;br /&gt;
120616 - 120617 白河 NB 峡谷攀岩（顶绳双生花后入夜；次日顶绳完攀双生花后，尝试红点未遂）&lt;br /&gt;
120622 - 120624 白河 NB 峡谷攀岩（红点双生花之姊株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120629 登记结婚&lt;br /&gt;
&lt;br /&gt;
120714 白河 NB 峡谷攀岩（红点双生花之妹株 5.12d）&lt;br /&gt;
&lt;br /&gt;
120818 - 120819 止锚湾海边婚礼&lt;br /&gt;
&lt;br /&gt;
120930 - 121006 贵州紫云格凸攀岩（红点 La Piscineta Cina 5.12c/7b+）&lt;br /&gt;
121215 白河云蒙峡攀冰&lt;br /&gt;
&lt;br /&gt;
130112 白河桃源仙谷攀冰&lt;br /&gt;
130119 白河桃源仙谷攀冰&lt;br /&gt;
130126 白河NB峡谷攀冰&lt;br /&gt;
130127 白河天仙瀑攀冰&lt;br /&gt;
130207 - 130217 泰国甲米攀岩&lt;br /&gt;
&lt;br /&gt;
130404 - 130406 扬州兴化南京&lt;br /&gt;
&lt;br /&gt;
130528 嘎小多和大头出生，满月后嘎小多被我们领养&lt;br /&gt;
&lt;br /&gt;
130609 - 130613 大连&lt;br /&gt;
130619 - 130629 非洲肯尼亚追野生动物 10 日&lt;br /&gt;
130720 - 130721 驼梁两日&lt;br /&gt;
&lt;br /&gt;
131001 - 131006 阳朔攀岩&lt;br /&gt;
140131 - 140205 越南Cat Ba岛攀岩&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2019 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
190601 - 190602 白河精灵谷露天剧场恢复攀岩，如履薄冰 5.10d&lt;br /&gt;
190607 - 190609 端午白河精灵谷露天剧场攀岩、NB 峡谷攀岩（绝唱 5.10b、彩虹 5.11c）&lt;br /&gt;
190615 - 190616 白河精灵谷露天剧场攀岩、小怪攀岩（志愿者 5.10a）&lt;br /&gt;
190622 - 190623 白河精灵谷露天剧场、世外桃源攀岩（别有洞天）&lt;br /&gt;
190624 大雪岩时攀岩馆开年卡&lt;br /&gt;
190627 恢复抱石， 岩时攀岩馆&lt;br /&gt;
190629 - 190630 白河精灵谷世外桃源攀岩，红点别有洞天 5.10d&lt;br /&gt;
190706 - 190707 白河精灵谷世外桃源攀岩&lt;br /&gt;
190713 - 190714 白河精灵谷世外桃源攀岩&lt;br /&gt;
190720 - 190721 白河精灵谷世外桃源攀岩&lt;br /&gt;
190727 - 190728 白河精灵谷世外桃源、NB 峡谷（死硬）攀岩&lt;br /&gt;
190808 - 190811 大连 4 日&lt;br /&gt;
190817 - 190818 白河精灵谷世外桃源攀岩，红点吃瓜群众 5.11c/d&lt;br /&gt;
190831 - 190901 白河精灵谷世外桃源攀岩，开始摸红太阳 5.12a&lt;br /&gt;
190907 - 190908 白河精灵谷世外桃源攀岩，摸红太阳&lt;br /&gt;
190913 - 190915 白河精灵谷世外桃源攀岩，尝试红点红太阳&lt;br /&gt;
190921 - 190922 白河精灵谷世外桃源、露天剧场攀岩，红点红太阳 5.12a，Flash 天生丽质 5.11a、滴水之恩 5.11a；On-Sight 春风化雨 5.11a&lt;br /&gt;
191019 白河精灵谷露天剧场攀岩，红点夜凉如水 5.11a、阳光明媚 5.11c&lt;br /&gt;
191020 白河精灵谷露天剧场攀岩，白河攀岩基金比赛交流活动，顶绳完攀露天剧场所有线路（12 条）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2020 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20200718 白河鸽壁大麻雀攀岩（摸了一把没到顶，难点没分）&lt;br /&gt;
20200725 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200801 白河鸽壁大麻雀攀岩（两把顶绳）&lt;br /&gt;
20200808 白河鸽壁大麻雀攀岩（两把顶绳，山间流水年度最充沛）&lt;br /&gt;
20200815 白河鸽壁大麻雀攀岩（两把顶绳，山间流水还是很多，多多趴石头上听水参禅：）&lt;br /&gt;
20200822 白河鸽壁大麻雀攀岩（16时左右到岩场，爬了两把顶绳，肉老师生日，拍了一组）&lt;br /&gt;
20200830 白河鸽壁大麻雀攀岩（雨师周六有事，很晚才干到白河）&lt;br /&gt;
20200905 无攀岩，带多多从鸽壁穿越到精灵谷，世外桃源碰到大头玩了会儿（GAGA回大连，雨师牧沙去了天门山。当晚小何布达拉的分享会）&lt;br /&gt;
20200906 白河鸽壁大麻雀攀岩（快到中午和雨师去干了一把，被马蜂蛰到大臂，先锋艰难挂到顶）&lt;br /&gt;
20200912 白河鸽壁大麻雀攀岩（晨起大雨，午后放大晴，云奇美，16时左右到岩场，干了三把顶绳）&lt;br /&gt;
20200913 白河鸽壁大麻雀攀岩（11时左右到岩场，又干了两把顶绳，第一次周末连爬两天）&lt;br /&gt;
20200919 白河鸽壁大麻雀攀岩（做完多多的木床，16时左右到岩场，一把顶绳轻松无脱落到顶，有点意外，辛大王被多只马蜂攻击，战状惨烈。第二把顶绳无脱落吃力到顶）&lt;br /&gt;
20200920 白河鸽壁大麻雀攀岩（12时左右到岩场，一把先锋过了难点后右手力竭 take 了，第二把顺利完成，可惜结束动作略变形，不够从容：）&lt;br /&gt;
20201002 - 04 南京 - 兴化 - 南京&lt;br /&gt;
20201004 - 06 南京 - 大连&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2021 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
202101 白河基金管庄抱石交流活动&lt;br /&gt;
20210215 精灵谷抱石&lt;br /&gt;
20210222 精灵谷抱石&lt;br /&gt;
20210302 精灵谷抱石&lt;br /&gt;
20210315 精灵谷抱石&lt;br /&gt;
20210322 精灵谷抱石&lt;br /&gt;
20210411 精灵谷抱石&lt;br /&gt;
20210418 精灵谷抱石&lt;br /&gt;
202104 多次前往植物园&lt;br /&gt;
20210510 精灵谷抱石&lt;br /&gt;
20210724 流白水抱石&lt;br /&gt;
20210830 白河NB峡谷攀岩&lt;br /&gt;
20210913 白河NB峡谷攀岩&lt;br /&gt;
20210923 大连3日&lt;br /&gt;
10 月，多次前往植物园&lt;br /&gt;
11 月，开始搞驹遛车&lt;br /&gt;
20211129 白河老怪抱石&lt;br /&gt;
12月，搞驹遛车多次前往密云&lt;br /&gt;
20211205 国家博物馆&lt;br /&gt;
20211212 白河怀柔环线，带着贵贵遛 BMW 320LI，9.3L/100km&lt;br /&gt;
20211223 密云射电望远镜阵列环线，三口遛 Benz GLA&lt;br /&gt;
20211224 大望路平安夜抱石交流&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2022 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20220103 禅院找波波炸河虾，炫酸汤鱼&lt;br /&gt;
20220109 接上王大饼看木僵贾主任，潭柘寺王平环线遛车。。。&lt;br /&gt;
20220115 遛大弯找冰上扎营的英雄和蚂蚱，当晚车内露营，清晨车内都零下十度左右，嘎小多瑟瑟发抖&lt;br /&gt;
20220131 白河一日，冰上遛多多，禅院围炉夜话。。。&lt;br /&gt;
20220206 大觉寺一日，遛多多&lt;br /&gt;
20220213 大雪一日，冒雪温榆河遛贵贵，富贵兴奋异常&lt;br /&gt;
20220219 妙峰山涧沟环线遛多多&lt;br /&gt;
20220227 妙峰山涧沟环线遛多多&lt;br /&gt;
20220306 白河一日，精灵谷二楼找波波保护借顶绳爬了几把&lt;br /&gt;
20220313 白河一日，老怪逛逛，老怪先生爬了一把疯人院，完了隧道口看了看新石头&lt;br /&gt;
20220319 妙峰山涧沟环线遛多多，最后的春雪&lt;br /&gt;
20220326 白河老怪攀岩&lt;br /&gt;
20220403 白河赶集，老怪攀岩&lt;br /&gt;
20220409 白河老怪攀岩&lt;br /&gt;
20220416-17 白河老怪攀岩&lt;br /&gt;
20220423 白河老怪攀岩&lt;br /&gt;
20220501 白河老怪攀岩&lt;br /&gt;
20220508 白河老怪攀岩&lt;br /&gt;
20220514 白河老怪攀岩&lt;br /&gt;
20220529 四海镇环线一日&lt;br /&gt;
20220611 白河老怪攀岩&lt;br /&gt;
20220629 Weding 十周年&lt;br /&gt;
20220723-24 白河NB峡谷攀岩&lt;br /&gt;
20221015 白河牛盆峪抱石、拣柴，张家坟打水。。。&lt;br /&gt;
20221113 白河牛盆峪抱石&lt;br /&gt;
20221120 白河塔子峪抱石&lt;br /&gt;
20221126 白河董小姐抱石&lt;br /&gt;
20221204 妙峰山涧沟环线遛多多，下山水边玩了玩户外意式咖啡壶、蒸汽奶泡机，气温零度左右，低温环境体验不好啊&lt;br /&gt;
20221210 GL8 发车北灵山，没上去，路边森林里多多玩了玩雪，斋堂水库观景台汉堡晚餐，当夜嗓子干痒，次日低烧。。。&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2023 年 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20230101 妙峰山登高&lt;br /&gt;
20230121 垡头史坦利新年包饺子&lt;br /&gt;
20230218-20 电驹大连3日&lt;br /&gt;
20230305 牛盆峪抱石&lt;br /&gt;
20230311-12 南京、兴化两日&lt;br /&gt;
20230319 牛盆峪抱石&lt;br /&gt;
20230325 牛盆峪搞钱活动，Model Y 拉垫子，带着贵贵附近转了转&lt;br /&gt;
20230331-0404 南京、兴化，提贴地飞行器回&lt;br /&gt;
20230408 白河天门山抱石&lt;br /&gt;
20230430-0502 贴地飞行大连3日，最后一个工作日早走，夜泊秦皇岛汽车园区，和贵贵睡车后，嘎嘎睡前座，还行&lt;br /&gt;
20230520 白河精灵谷世外桃源攀岩&lt;br /&gt;
20230622 白河流白水抱石，王大饼探亲&lt;br /&gt;
20230708 白河NB峡谷攀岩&lt;br /&gt;
20230715 白河NB峡谷攀岩，红点硬伤 5.13c（左肩拉伤后未完全恢复，当天爬了3、4把，天黑收工前拿下，中间休息了好久。。。）&lt;br /&gt;
20230721-22 乌兰察布两日，观云、追光、火山露营，黄花沟人品爆棚，贵贵（嘎小多多）开心异常。。。&lt;br /&gt;
20230819 白河NB峡谷攀岩&lt;br /&gt;
20230826-27 白河NB峡谷攀岩&lt;br /&gt;
20230909-10 枣庄夹谷山攀岩两日，On-Sight 小天鹅 5.12a&lt;br /&gt;
20230930-1001 白河小怪攀岩，1002 晚机场接昆明回来的韭儿&lt;br /&gt;
20231028 白河老怪攀岩，红点一箱啤酒 5.13a（左肩还是有点虚，当天爬了3把，摩擦力较上周略差，第一把热身，4进5力竭take。。。14:15 左右第三把拿下），完事和老怪先生两口子汇合，天门山抱石&lt;br /&gt;
今年就国庆以后，去了三次老怪，春天为啥没怎么去呢？&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2024 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20240206 春节带贵贵（嘎小多多）大连探亲。20240210（初一）回，大雾封路，10:00 左右上高速，0:47 WJX&lt;br /&gt;
20240211 初二南下探亲，9:40 WJX 出发。沭阳过夜。次日达。&lt;br /&gt;
20240524 南下探亲，19:38 王庆坨，23:57 泊章丘。次日 21:20 返，00:13 泊新沂。&lt;br /&gt;
&lt;br /&gt;
20240606 贵贵（嘎多小多）心包积液抢救&lt;br /&gt;
20240619 下午农大复查，当夜再次因心包积液导致心脏填塞抢救&lt;br /&gt;
20240620 上午出院回家，刚到进家门就又开始坐立不安、站立呼吸，四肢端还凉，观察约一个小时又送医院，又抽心包积液 250ml 近乎血&lt;br /&gt;
20240621 上午状态还好，见到我们还不停摇尾巴，抓门要出氧箱，复查心超，积液又回到 19 日夜里的量，医生建议输血或者手术。心超只见快速增多的积液，未见其他异常。&lt;br /&gt;
          为免控制不住的血性积液再次心脏填塞，被迫冒险开胸做心包切除尝试止血，术中发现右心房肿物，一并切除，手术前后共输 800ml 血&lt;br /&gt;
20240627 复查，催问医生快速化疗之事，答复至少等病理结果出来再说。。。&lt;br /&gt;
20240628 收到切除之心包、右心房外团块的病理结果：犬血管肉瘤 (HSA)。。。&lt;br /&gt;
20240706 永失我们的乖乖（嘎小多多），心头好像被挖走了一块肉。。。&lt;br /&gt;
&lt;br /&gt;
20240929 - 20241003 广西社更穿洞攀岩：&lt;br /&gt;
  Day1：魂在身后追10b (ON)、驯龙高手10a (ON)、神龙摆尾10c (ON)、13m 10d (ON)、全景图11b (ON)&lt;br /&gt;
  Day2：一番炸12b（挂顶前力竭冲坠）、10a (ON)&lt;br /&gt;
  Day3：开场白11b (ON)、放飞自我11d (ON)&lt;br /&gt;
  Day4：稀奇12a (ON)、清风自来12b（第5挂片take）&lt;br /&gt;
  Day5：壮士12a (又是挂顶前Take）、十三膝12c/d（第15挂片Take）&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2025 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20250131 - 20250207 福州一日、罗源抱石三日，泉州一日；回程取道杭州撸 60 只哈士奇。驾特斯拉电驹南下，全程4857km&lt;br /&gt;
20250403 - 20250406 大连探亲三日，4/3 13:00 WJX 出发，22时左右夜泊北镇，扎营冻屁股。4/5 滨海路投喂活爹野生梅花鹿。4/6 6:10出发，14:30朝阳休整，检查站大堵车。 &lt;br /&gt;
20250501 - 20250504 淄博刁花峪、石马攀岩四日，梁上君子5.11b (on)、剪刀手5.11c(on)、糖醋鲤鱼5.11a(on)，山高水长5.11c (flash)&lt;br /&gt;
20250505 - 20250506 电驹淄博八陡镇出发，兴化探亲，当晚回，蒙阴附近遭遇大风大雨，夜泊莱芜北服务区&lt;br /&gt;
20250531 - 20250601 龙安攀岩两日，富春小笼5.11c (on)、鸭咩爹 5.11a (on)，Hello Kitty 5.12b（顶绳一把完攀），旅行日记 5.13b/c（顶绳 work 了两把），Yellow Gold 5.13a（顶绳 work 了一把）&lt;br /&gt;
20250607 龙安攀岩一日，鸟窝 5.12d（先锋一把、顶绳一把），旅行日记 5.13b/c（顶绳 work 了一把）&lt;br /&gt;
20250608 白河NB峡谷攀岩一日，红点太阳花 5.12c（爬了四把，大意了）&lt;br /&gt;
20250926 - 20251007 开封半日、咸宁鸣水泉攀岩 5 日（28、29、1、2、3、4）、咸宁千桥一日（30）、芜湖戴店半日（5）、兴化探亲一日（10/6 八字桥夏小虎逝年小酒馆）。全程特斯拉电驹，全程2423km。&lt;br /&gt;
20251012 白河黑石抱石，我只能奔跑 V7&lt;br /&gt;
202510 - 202511 周末老怪战斗&lt;br /&gt;
20251230 建平牛河梁半日&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2026 年 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
20260101 - 20260102 大连探亲 2 日&lt;br /&gt;
20260213 - 20260227 13日4:00接上大猴，下午到滨海，撸两下老葛，继续苏州探望三伯，当晚宿苏州。次日回家。2/16 日晚启程、2/17 下午岳阳半日（岳阳楼、嗦粉）、2/18 21:00 到达桂林两江机场接上嘎小辫。2/19 - 2/25 阳朔白山、雷劈山、思龙山攀岩，flash 多面手 5.11b。驾特斯拉电驹南下，总行程约 5800km&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* 内蒙太仆寺旗的石条山 [http://bowuguan.hljlr.gov.cn/kpbk/201809/t20180912_266910.htm 中国石柱群 火山岩柱状节理分布图]&lt;br /&gt;
* [https://www.parachuteshop.com/Mirage%20G4.htm MIRAGE parachute] [https://jingyan.baidu.com/article/6079ad0e94668728fe86db76.html 001][http://www.tfskydive.com/AFF.html 002][http://www.xdtsjlb.com/ 003]&lt;br /&gt;
* [https://www.rockskymarket.com/8-containers Containers]&lt;br /&gt;
* [http://www.wingsuitfly.com/ Wingsuit flying]&lt;br /&gt;
* [https://blacksheepadventuresports.com/2018/10/13/comparison-review-sub-9mm-climbing-ropes/ Sub 9mm Climbing Rope Comparison]&lt;br /&gt;
* [https://www.dailyscandinavian.com/climbing-in-the-lofoten-islands-norway/ Climbing in the Lofoten Islands, Norway] https://www.thecrag.com/climbing/norway/lofoten https://outtt.com/en/norway/lofoten/hiking https://outtt.com/en/adventures/8686/djevelporten-fl%C3%B8ya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Lofoten]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/HC32</id>
		<title>HC32</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/HC32"/>
				<updated>2026-04-28T04:23:49Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* ADC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;默认使用'''小端''' (Little Endian)&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://hdsc.com.cn/Category82&lt;br /&gt;
* [https://developer.arm.com/tools-and-software/embedded/cmsis ARM CMSIS]&lt;br /&gt;
* [https://arm-software.github.io/CMSIS_5/Core/html/templates_pg.html CMSIS github doc]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1590 HC32D391FEUA-TFN32TR] 192KB RAM，512KB Flash, up to 200MHz Cortex-M4, QFN32 4x4mm, 1.8-3.6V, 数据计算单元(Data Computing Unit)，USB 2.0fs, I2S, 40nm eFlashULP工艺&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://www.hdsc.com.cn/Category83-1499?All=1 HC32F4A0PITB-LQFP100] 516KB RAM, 2048KB Flash, up to 240MHz Cotex-M4, LQFP100 14x14mm [https://www.hdsc.com.cn/Category82?All=1 All]&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1501 HC32F4A0SGHB-VFBGA176] 516KB RAM, 1024KB Flash, up to 240MHz Cortex-M4, VFBGA176 10×10mm, 1.8-3.6V, USB, CAN, I2S, SDIO&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1497 HC32F4A0SIHB-VFBGA176] 516KB RAM, 2048KB Flash, up to 240MHz Cortex-M4, VFBGA176 10×10mm, 1.8-3.6V, USB, CAN, I2S, SDIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://product.sitimechina.com/uploadfile/images/202103/202103231149138817.pdf SiT1630]  &amp;lt;-----&amp;gt; SiT1533&lt;br /&gt;
* [http://product.sitimechina.com/product_list.php?id=1 32.768KHz 抗振动]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  HC32L130F8UA ==&lt;br /&gt;
&lt;br /&gt;
更抗灰、抗潮的封装： HC32L130E8PA (TSSOP-28, 10x7mm), HC32L130J8TA (LQFP-48, 7x7mm)&lt;br /&gt;
&lt;br /&gt;
* Cortex-M0+, Up to 48MHz&lt;br /&gt;
* 8KB RAM, 64KB Flash&lt;br /&gt;
* UART x2, LPUART x1, SPI x1, I2C x2, PWM x10&lt;br /&gt;
* AES-128, TRNG&lt;br /&gt;
*  0.9μA @3V 深度休眠模式+ RTC 工作&lt;br /&gt;
* 130μA/MHz@3V@24MHz 工作模式：CPU 和外设运行，从 Flash 运行程序&lt;br /&gt;
* -40 ~ 85 'C&lt;br /&gt;
* 1.8 ~ 5.5V&lt;br /&gt;
* QFN32, 4x4mm&lt;br /&gt;
&lt;br /&gt;
[[文件:HC32L130-QFN32.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
引脚规划参考官方文档：《HC32L130 / HC32L136 / HC32F030 系列硬件开发指南》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PB0 - AIN8/VC0_INN10/VC1_INN6/SEG13&lt;br /&gt;
* PB1 - AIN9/EXVREF/VC1_INP6/VC1_INN7/SEG12&lt;br /&gt;
* PB6 - I2C0_SCL (SEL1)&lt;br /&gt;
* PB7 - I2C0_SDA (SEL1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PA04 - SPI0_CS (SEL1)&lt;br /&gt;
* PA05 - SPI0_CLK (SEL1)&lt;br /&gt;
* PA06 - SPI0_MISO (SEL1)&lt;br /&gt;
* PA07 - SPI0_MOSI (SEL1)&lt;br /&gt;
&lt;br /&gt;
* PA09 -  UART0_TXD (SEL1)&lt;br /&gt;
* PA10 -  UART0_RXD (SEL1)&lt;br /&gt;
&lt;br /&gt;
* PA14 -  UART0_TXD (SEL2) - SWCLK&lt;br /&gt;
* PA13 -  UART0_RXD (SEL2) - SWDIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PB0/PB1, PB4/PB5: I2C1&lt;br /&gt;
&lt;br /&gt;
* PD0/PD1 as UART1_TX/RX (SEL3) ------------------------&amp;gt; M_RX / M_TX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
[[文件:HC32L130-mini-sys.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MODE (模式) PIN ==&lt;br /&gt;
&lt;br /&gt;
在正常情况下，必须通过电阻（推荐 10KΩ）将 MODE Pin (PD03/MD)下拉到 GND。&lt;br /&gt;
&lt;br /&gt;
* MODE (PD03)为高电平时，Power Reset 或硬件 Reset，则芯片进入在线编程模式（如加上跳帽使 MODE Pin 置位于高电平），通过上位机可以进行在线编程；&lt;br /&gt;
* MODE (PD03)为低电平时，芯片进入用户模式。&lt;br /&gt;
&lt;br /&gt;
PD03/MD 用户可用作输入端口，但是在 NRST 有效期间（即 RESETB 为低电平期间）必须保持低电平，否则 NRST 解除后（即 RESETB 变为高电平），芯片会误进入在线编程模式（Boot Mode）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 当复位时 BOOT0（PD03）管脚为高电平，芯片工作于 ISP 编程模式，可通过 ISP 协议对 Flash 进行编程。&lt;br /&gt;
* 当复位时 BOOT0（PD03）管脚为低电平，芯片工作于用户模式，芯片执行 Flash 内的程序代码，可通过 SWD 协议对 Flash 进行编程。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''注意：'''&lt;br /&gt;
&lt;br /&gt;
- 建议预留 PA9、PA10 作为 ISP 编程接口，如需使用 PA13、PA14 作为 ISP 编程接口请参见 PCN：[https://hdsc.com.cn/Public/Uploads/uploadfile/files/20200723/20200723142051_5f192c43a9684.pdf PCN20191230-1_HC32L130HC32F030HC32L136]  提高烧录速度。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
&lt;br /&gt;
=== Compier ===&lt;br /&gt;
&lt;br /&gt;
* toolchain/gcc-arm-none-eabi/bin/&lt;br /&gt;
** arm-none-eabi-gcc&lt;br /&gt;
** arm-none-eabi-g++&lt;br /&gt;
** arm-none-eabi-gdb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* toolchain/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/&lt;br /&gt;
** libc.a&lt;br /&gt;
** libstdc++.a&lt;br /&gt;
** libm.a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
查看生成的变量地址：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-nm -n build/main.elf  | grep k&lt;br /&gt;
00000108 T _Z15key_irq_handlerv&lt;br /&gt;
00000190 T SystemCoreClockUpdate&lt;br /&gt;
000001a0 T systick_init&lt;br /&gt;
00000368 W _sbrk&lt;br /&gt;
000003a0 T _kill&lt;br /&gt;
000003d0 T _lseek&lt;br /&gt;
000003f0 T _link&lt;br /&gt;
00000958 T Sysctrl_GetHClkFreq&lt;br /&gt;
00000a78 T Sysctrl_GetPClkFreq&lt;br /&gt;
00000b2c T SysTick_Handler&lt;br /&gt;
0000144c T _sbrk_r&lt;br /&gt;
00001470 T __malloc_lock&lt;br /&gt;
00001472 T __malloc_unlock&lt;br /&gt;
00001498 t .udivsi3_skip_div0_test&lt;br /&gt;
000015ac t .divsi3_skip_div0_test&lt;br /&gt;
20000000 D SystemCoreClock&lt;br /&gt;
20000004 d _tx_ok&lt;br /&gt;
20000094 B k&lt;br /&gt;
200001a8 b secTicks&lt;br /&gt;
200001b0 B __malloc_sbrk_start&lt;br /&gt;
200001b4 B msTicks_cnt&lt;br /&gt;
200001b8 B msTicks&lt;br /&gt;
200005c0 ? stack&lt;br /&gt;
20001c00 A __StackLimit&lt;br /&gt;
20002000 A __stack&lt;br /&gt;
20002000 B __StackTop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
查看 .data .bss 段大小：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
   9740     124     324   10188    27cc build/main.elf&lt;br /&gt;
&lt;br /&gt;
set the global var 'int k = 0':&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
   9760     120     328   10208    27e0 build/main.elf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* .data：初始值存储在 Flash 中，启动时复制到 RAM&lt;br /&gt;
* .bss：只需要记录大小信息，不需要在 Flash 中存储 0 值。（Block Started by Symbol）段存放：&lt;br /&gt;
** '''未初始化'''的'''全局变量'''&lt;br /&gt;
** '''未初始化'''的静态变量&lt;br /&gt;
** '''初始化为 0''' 的变量（包括静态变量）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
FLASH 存储器：&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .text (代码)  |&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .rodata (常量)|&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .data (初始值)|&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | ...           |&lt;br /&gt;
    +---------------+&lt;br /&gt;
&lt;br /&gt;
RAM 存储器：&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .data (副本)  | ← 从 Flash 复制过来&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .bss          | ← 启动时清零&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | 堆 (heap)     |&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | 栈 (stack)    |&lt;br /&gt;
    +---------------+&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Uploader ===&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/milton/p/16586831.html HC32L110(二) HC32L110 在 Ubuntu 下使用 J-Link 烧录]&lt;br /&gt;
&lt;br /&gt;
==== J-Link ====&lt;br /&gt;
&lt;br /&gt;
从 https://github.com/hdscmcu/pack 获取 HDSC.HC32L130.1.0.1.pack，这是个 zip 包，改名为 L130.zip 后 unzip 解压：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ find .&lt;br /&gt;
./Device/Include/HC32L130E8PA.h&lt;br /&gt;
./Device/Include/HC32L130F8UA.h&lt;br /&gt;
./Device/Include/HC32L130J8TA.h&lt;br /&gt;
./Device/Include/system_hc32l130.h&lt;br /&gt;
./Device/Source/ARM/startup_hc32l130.s&lt;br /&gt;
./Device/Source/main.c&lt;br /&gt;
./Device/Source/system_hc32l130.c&lt;br /&gt;
./Flash/FlashHC32L130_64K.FLM&lt;br /&gt;
./HDSC.HC32L130.pdsc    # XML 描述文件&lt;br /&gt;
./SVD/HC32L130E8PA.sfr&lt;br /&gt;
./SVD/HC32L130F8UA.sfr&lt;br /&gt;
./SVD/HC32L130J8TA.sfr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
将 FlashHC32L130_64K.FLM 改名为 HC32L130_64K.FLM，放在：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;  &lt;br /&gt;
$ find /c/Program\ Files\ \(x86\)/SEGGER/JLink/Devices/HDSC/&lt;br /&gt;
/c/Program Files (x86)/SEGGER/JLink/Devices/HDSC/HC32L130_64K.FLM&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/c/Program\ Files\ \(x86\)/SEGGER/JLink/JLinkDevices.xml 增加：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Huada (HDSC) --&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L110x4&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x800&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_16K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x4000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L110B4_C4.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L110x6&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x1000&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_32K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x8000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L110B6_C6.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L130&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x2000&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_64K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x10000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L130_64K.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
则可使用 J-Flash 烧写：&lt;br /&gt;
&lt;br /&gt;
* MCU 选 HC32L130，SWD 4000KHz&lt;br /&gt;
* Target -&amp;gt; Connect&lt;br /&gt;
* Target -&amp;gt; Production Programming（快捷键 F7）&lt;br /&gt;
* Target -&amp;gt; Manual Programming -&amp;gt; Start Application（快捷键 F9）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JLink 命令行方式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat  ../../toolchain/jlink-flash.cmd&lt;br /&gt;
erase&lt;br /&gt;
loadfile build/main.hex&lt;br /&gt;
r&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$ /c/SEGGER/JLink/JLink.exe -device HC32L130 -if swd -speed 4000 -CommanderScript ../../toolchain/jlink-flash.cmd&lt;br /&gt;
SEGGER J-Link Commander V6.72c (Compiled May  8 2020 17:22:54) DLL version V6.72c, compiled May  8 2020 17:21:59&lt;br /&gt;
&lt;br /&gt;
J-Link Command File read successfully.&lt;br /&gt;
Processing script file...&lt;br /&gt;
&lt;br /&gt;
J-Link connection not established yet but required for command.&lt;br /&gt;
Connecting to J-Link via USB...O.K.&lt;br /&gt;
Firmware: J-Link V9 compiled Dec 13 2019 11:14:50&lt;br /&gt;
Hardware version: V9.30&lt;br /&gt;
S/N: 36310083&lt;br /&gt;
License(s): RDI, GDB, FlashDL, FlashBP, JFlash&lt;br /&gt;
VTref=3.300V&lt;br /&gt;
Target connection not established yet but required for command.&lt;br /&gt;
Device &amp;quot;HC32L130&amp;quot; selected.&lt;br /&gt;
&lt;br /&gt;
Connecting to target via SWD&lt;br /&gt;
Found SW-DP with ID 0x0BC11477&lt;br /&gt;
Unknown DP version. Assuming DPv0&lt;br /&gt;
Scanning AP map to find all available APs&lt;br /&gt;
AP[1]: Stopped AP scan as end of AP map has been reached&lt;br /&gt;
AP[0]: AHB-AP (IDR: 0x04770031)&lt;br /&gt;
Iterating through AP map to find AHB-AP to use&lt;br /&gt;
AP[0]: Core found&lt;br /&gt;
AP[0]: AHB-AP ROM base: 0xE00FF000&lt;br /&gt;
CPUID register: 0x410CC601. Implementer code: 0x41 (ARM)&lt;br /&gt;
Found Cortex-M0 r0p1, Little endian.&lt;br /&gt;
FPUnit: 4 code (BP) slots and 0 literal slots&lt;br /&gt;
CoreSight components:&lt;br /&gt;
ROMTbl[0] @ E00FF000&lt;br /&gt;
ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS&lt;br /&gt;
ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT&lt;br /&gt;
ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB&lt;br /&gt;
Cortex-M0 identified.&lt;br /&gt;
Erasing device...&lt;br /&gt;
J-Link: Flash download: Total time needed: 0.189s (Prepare: 0.110s, Compare: 0.000s, Erase: 0.075s, Program: 0.000s, Verify: 0.000s, Restore: 0.003s)&lt;br /&gt;
Erasing done.&lt;br /&gt;
&lt;br /&gt;
Downloading file [build/main.hex]...&lt;br /&gt;
J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (10752 bytes)&lt;br /&gt;
J-Link: Flash download: Total time needed: 1.095s (Prepare: 0.017s, Compare: 0.134s, Erase: 0.299s, Program: 0.570s, Verify: 0.060s, Restore: 0.012s)&lt;br /&gt;
O.K.&lt;br /&gt;
&lt;br /&gt;
Reset delay: 0 ms&lt;br /&gt;
Reset type NORMAL: Resets core &amp;amp; peripherals via SYSRESETREQ &amp;amp; VECTRESET bit.&lt;br /&gt;
Reset: Halt core after reset via DEMCR.VC_CORERESET.&lt;br /&gt;
Reset: Reset device via AIRCR.SYSRESETREQ.&lt;br /&gt;
&lt;br /&gt;
Script processing completed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
或者：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat up.cmd&lt;br /&gt;
device HC32L130&lt;br /&gt;
si SWD&lt;br /&gt;
speed 4000&lt;br /&gt;
connect&lt;br /&gt;
erase&lt;br /&gt;
loadfile build/main.hex&lt;br /&gt;
r&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$ /c/SEGGER/JLink/JLink.exe -CommanderScript ./up.cmd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UART ====&lt;br /&gt;
&lt;br /&gt;
* https://github.com/kicer/hc32flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STLINK ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.51hei.com/bbs/dpj-194723-1.html pyOCD]&lt;br /&gt;
&lt;br /&gt;
* https://www.cnblogs.com/milton/p/16586831.html&lt;br /&gt;
* https://github.com/IOsetting/hc32l110-template&lt;br /&gt;
* https://gitcode.com/open-source-toolkit/8cb1a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linker Script ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
MEMORY&lt;br /&gt;
{&lt;br /&gt;
    FLASH ( rx )      : ORIGIN = 0x00000000, LENGTH = 64K&lt;br /&gt;
    RAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 8K&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.vectors (Vector Table) 位于 Flash 开始处，Flash 上代码段 .text 之前：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
ENTRY(Reset_Handler)&lt;br /&gt;
&lt;br /&gt;
SECTIONS&lt;br /&gt;
{&lt;br /&gt;
  .text :&lt;br /&gt;
  {&lt;br /&gt;
    KEEP(*(.vectors))&lt;br /&gt;
    __Vectors_End = .;&lt;br /&gt;
    __Vectors_Size = __Vectors_End - __Vectors;&lt;br /&gt;
    __end__ = .;&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arch/hc32/common/startup_hc32l13x.c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
  Exception / Interrupt Vector table&lt;br /&gt;
 *----------------------------------------------------------------------------*/&lt;br /&gt;
const pFunc __Vectors[] __attribute__ ((section(&amp;quot;.vectors&amp;quot;))) = {&lt;br /&gt;
    /* Cortex-M Exception Handlers */&lt;br /&gt;
    (pFunc)&amp;amp;__StackTop,                       /*      Initial Stack Pointer     */&lt;br /&gt;
    Reset_Handler,                            /*      Reset Handler             */&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bare Metal ==&lt;br /&gt;
&lt;br /&gt;
=== Reset Handler ===&lt;br /&gt;
&lt;br /&gt;
hc32/variants/hc32l130f8ua/hc32l130f8ua.ld (Link Script) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
ENTRY(Reset_Handler)&lt;br /&gt;
&lt;br /&gt;
SECTIONS&lt;br /&gt;
{&lt;br /&gt;
  .text :&lt;br /&gt;
  {&lt;br /&gt;
    KEEP(*(.vectors))&lt;br /&gt;
    __Vectors_End = .;&lt;br /&gt;
    __Vectors_Size = __Vectors_End - __Vectors;&lt;br /&gt;
    __end__ = .;&lt;br /&gt;
    *(.text*)&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hc32/common/startup_hc32l13x.c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Reset_Handler(void) {&lt;br /&gt;
&lt;br /&gt;
    uint32_t *pSrc, *pDest;&lt;br /&gt;
    uint32_t *pTable __attribute__((unused));&lt;br /&gt;
&lt;br /&gt;
    SystemInit();&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * Single section scheme.&lt;br /&gt;
     *&lt;br /&gt;
     *  The ranges of copy from/to are specified by following symbols&lt;br /&gt;
     *    __etext: LMA of start of the section to copy from. Usually end of text&lt;br /&gt;
     *    __data_start__: VMA of start of the section to copy to&lt;br /&gt;
     *    __data_end__: VMA of end of the section to copy to&lt;br /&gt;
     *&lt;br /&gt;
     *  All addresses must be aligned to 4 bytes boundary.&lt;br /&gt;
    */&lt;br /&gt;
    pSrc  = &amp;amp;__etext;&lt;br /&gt;
    pDest = &amp;amp;__data_start__;&lt;br /&gt;
&lt;br /&gt;
    for ( ; pDest &amp;lt; &amp;amp;__data_end__ ; ) {&lt;br /&gt;
        *pDest++ = *pSrc++;&lt;br /&gt;
    }&lt;br /&gt;
    __START();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SystemInit() ===&lt;br /&gt;
&lt;br /&gt;
'''位于 hc32/common/system_hc32l13x.c:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void SystemInit(void)&lt;br /&gt;
{&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCL_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C22ul)));&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCH_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C08ul)));&lt;br /&gt;
    SystemCoreClockUpdate();&lt;br /&gt;
    _HidePinInit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Makefile ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
-D__START=main&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SystemInit() ==&lt;br /&gt;
&lt;br /&gt;
'''位于 hc32/common/system_hc32l13x.c:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void SystemInit(void)&lt;br /&gt;
{&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCL_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C22ul)));&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCH_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C08ul)));&lt;br /&gt;
    SystemCoreClockUpdate();&lt;br /&gt;
    _HidePinInit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系统时钟 (SystemClk) ===&lt;br /&gt;
&lt;br /&gt;
HC32L13x 支持以下五种时钟源作为系统时钟：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
SysctrlClkRCH  = 0u,       // 内部 RC 高速时钟，输出频率为 4~24MHz&lt;br /&gt;
SysctrlClkXTH  = 1u,       // 外部晶振高速时钟，XTH 可以不接晶振，直接从 PD00 引脚输入 4~32MHz 的时钟信号&lt;br /&gt;
SysctrlClkRCL  = 2u,       // 内部 RC 低速时钟，可选频率：38.4K 与 32.768K。当系统进入 DeepSleep，此低速时钟不会自动关闭，超低功耗外设模块可以选择 RCL 作为其时钟。&lt;br /&gt;
SysctrlClkXTL  = 3u,       // 外部晶振低速时钟，XTL 可以不接晶振，直接从 PC14 引脚输入 32.768KHz 的时钟信号。当系统进入 Deep Sleep，此低速时钟不会自动关闭。超低功耗模式下工作的&lt;br /&gt;
                           // 外设模块可以选择 XTL 作为其时钟。&lt;br /&gt;
SysctrlClkPLL  = 4u,       // 锁相环 PLL 时钟&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
还有两个辅助时钟：&lt;br /&gt;
* 内部低速 10K 时钟；仅供 WatchDog 和 CLKTRIM 模块使用。&lt;br /&gt;
* 内部 150K 时钟：仅供 LVD 和 VC 模块使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''芯片上电或复位后的默认时钟源为 4MHz 的内部 RCH 时钟'''；当系统进入 Deep Sleep，此高速时钟会自动关闭。&lt;br /&gt;
&lt;br /&gt;
更改寄存器 RCH_CR[10:0]的数值即可调整 RCH 的输出频率。寄存器数值每增加 1 则 RCH 的输出频率增加约 0.2%，总调整范围为 4~24MHz。更改 RCH 输出频率需要按照特定的更改时序，详见系统时钟切换章节。&lt;br /&gt;
&lt;br /&gt;
内部高速时钟 RCH 从启动到稳定仅需 4us。为了在深度休眠模式下能快速响应中断，建议进入深度休眠模式前将系统时钟切换为 RCH。&lt;br /&gt;
&lt;br /&gt;
RCL 默认启用 RCL_CR_TRIM_32768_VAL (32.768kHz)，可通过设置 RCL_CR 其为 RCL_CR_TRIM_38400_VAL (38.4kHz)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCLK 时钟 ===&lt;br /&gt;
&lt;br /&gt;
主供 CPU 核心。位于SYSCTRL 的 SYSCTRL0 寄存器&lt;br /&gt;
&lt;br /&gt;
'''HCLK 时钟来源选择:''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
000： SystemClk         /* reset value */&lt;br /&gt;
001： SystemClk/2 &lt;br /&gt;
010： SystemClk/4 &lt;br /&gt;
011： SystemClk/8 &lt;br /&gt;
100： SystemClk/16 &lt;br /&gt;
101： SystemClk/32 &lt;br /&gt;
110： SystemClk/64 &lt;br /&gt;
111： SystemClk/128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLK 时钟 ===&lt;br /&gt;
&lt;br /&gt;
主供外设。位于SYSCTRL 的 SYSCTRL0 寄存器&lt;br /&gt;
&lt;br /&gt;
'''PCLK 时钟来源选择:''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00： HCLK         /* reset value */&lt;br /&gt;
01： HCLK/2 &lt;br /&gt;
10： HCLK/4 &lt;br /&gt;
11： HCLK/8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SysTick 定时器 ==&lt;br /&gt;
&lt;br /&gt;
SysTick 为 24 位的定时器，向下计数。定时器的计数减到 0 后，就会重新装载一个可编程的数值，同时产生 SysTick 异常（异常编号为 15）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
MCU 的 GPIO 是通过 CMOS 的 PMOS 输出高电平，NMOS 输出低电平。&lt;br /&gt;
&lt;br /&gt;
内部上拉电阻也是一个 PMOS，引脚输出时，PMOS 或 NMOS 工作在线性区域，其等效导通电阻随着 MCU 的 VCC 变化而变化。到 MCU 工作下限电压附近时，其导通电阻会急剧变化，表象上看就是驱动能力急剧下降，上拉电阻也变大&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
芯片复位后端口为高阻输入，目的是防止芯片被异常复位时，对外部器件产生异常动作。但为了避免高阻输入而产生的漏电，用户要在芯片启动之后对端口进行相应的配置（配置成内部拉高/拉低输入或者输出）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt ==&lt;br /&gt;
&lt;br /&gt;
嵌套向量中断控制器 (NVIC) ，支持 32 个外部中断请求（IRQ）， 1 个不可屏蔽中断（NMI）&lt;br /&gt;
&lt;br /&gt;
Cortex-M0+ 的中断向量表，位于存储器空间的开始位置，注意主栈指针（MSP）的初始值位于第一个入口：&lt;br /&gt;
&lt;br /&gt;
[[文件:Cortex-m0plus-int-vec-table.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
中断号定义于 '''arch/hc32/common/hc32l13x.h:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/* Interrupt Number Definition */&lt;br /&gt;
typedef enum IRQn&lt;br /&gt;
{&lt;br /&gt;
    NMI_IRQn            = -14, /*  2 Non Maskable                            */&lt;br /&gt;
    HardFault_IRQn      = -13, /*  3 Hard Fault                              */&lt;br /&gt;
    SVC_IRQn            = -5,  /* 11 SV Call                                 */&lt;br /&gt;
    PendSV_IRQn         = -2,  /* 14 Pend SV                                 */&lt;br /&gt;
    SysTick_IRQn        = -1,  /* 15 System Tick                             */&lt;br /&gt;
&lt;br /&gt;
    PORTA_IRQn          = 0 ,&lt;br /&gt;
    PORTB_IRQn          = 1 ,&lt;br /&gt;
    PORTC_IRQn          = 2 ,&lt;br /&gt;
    PORTD_IRQn          = 3 ,&lt;br /&gt;
    DMAC_IRQn           = 4 ,&lt;br /&gt;
    TIM3_IRQn           = 5 ,&lt;br /&gt;
    UART0_IRQn          = 6 ,&lt;br /&gt;
    UART1_IRQn          = 7 ,&lt;br /&gt;
    LPUART0_IRQn        = 8 ,&lt;br /&gt;
    LPUART1_IRQn        = 9 ,&lt;br /&gt;
    SPI0_IRQn           = 10,&lt;br /&gt;
    SPI1_IRQn           = 11,&lt;br /&gt;
    I2C0_IRQn           = 12,&lt;br /&gt;
    I2C1_IRQn           = 13,&lt;br /&gt;
    TIM0_IRQn           = 14,&lt;br /&gt;
    TIM1_IRQn           = 15,&lt;br /&gt;
    TIM2_IRQn           = 16,&lt;br /&gt;
    LPTIM_IRQn          = 17,&lt;br /&gt;
    ADTIM4_IRQn         = 18,&lt;br /&gt;
    ADTIM5_IRQn         = 19,&lt;br /&gt;
    ADTIM6_IRQn         = 20,&lt;br /&gt;
    PCA_IRQn            = 21,&lt;br /&gt;
    WDT_IRQn            = 22,&lt;br /&gt;
    RTC_IRQn            = 23,&lt;br /&gt;
    ADC_IRQn            = 24,&lt;br /&gt;
    PCNT_IRQn           = 25,&lt;br /&gt;
    VC0_IRQn            = 26,&lt;br /&gt;
    VC1_IRQn            = 27,&lt;br /&gt;
    LVD_IRQn            = 28,&lt;br /&gt;
    LCD_IRQn            = 29,&lt;br /&gt;
    FLASH_RAM_IRQn      = 30,&lt;br /&gt;
    CLKTRIM_IRQn        = 31,&lt;br /&gt;
} IRQn_Type;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PortA, B, C, D 为 GPIO 中断处理入口&lt;br /&gt;
&lt;br /&gt;
四个口的对应寄存器：&lt;br /&gt;
* 中断状态寄存器 Px_STAT 地址分别为： 0x200, 0x240, 0x280, 0x2C0 (PA_STAT, PB_STAT, PC_STAT, PD_STAT)&lt;br /&gt;
* 中断清除寄存器 Px_ICLR 地址分别为： 0x210, 0x250, 0x290, 0x2D0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Low Power ==&lt;br /&gt;
&lt;br /&gt;
=== __WFI() ===&lt;br /&gt;
&lt;br /&gt;
Wait For Interrupt, 指令执行后，MCU 挂起，直到下一个中断出现。。。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/* Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs */&lt;br /&gt;
__attribute__((always_inline)) __STATIC_INLINE void __WFI(void)&lt;br /&gt;
{&lt;br /&gt;
  __ASM volatile (&amp;quot;wfi&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
中断出现、继续执行，下一条指令位于 __WFI() 之后，即返回 wfi 指令之所在&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sleep Mode ===&lt;br /&gt;
&lt;br /&gt;
CPU 核心不运行，其他外设都运行，aeco-goxp v1.2 约 200uA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Lpm_GotoSleep(boolean_t bOnExit)&lt;br /&gt;
{&lt;br /&gt;
    SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;br /&gt;
    SCB-&amp;gt;SCR |= 1u&amp;lt;&amp;lt;bOnExit;&lt;br /&gt;
    __WFI();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DeepSleep Mode ===&lt;br /&gt;
&lt;br /&gt;
进入此模式务必预留外部中断唤醒按钮应急使用！有靠谱的 Timer / RTC 定时中断亦可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DeepSleep 模式支持少量外设运行：&lt;br /&gt;
&lt;br /&gt;
* XTL &lt;br /&gt;
* RCL &lt;br /&gt;
* RESET&lt;br /&gt;
* WDT &lt;br /&gt;
* RTC &lt;br /&gt;
* LPUART0-1 &lt;br /&gt;
* GPIO &lt;br /&gt;
* VC0-1 &lt;br /&gt;
&lt;br /&gt;
* CLKTRIM &lt;br /&gt;
* LPTIM &lt;br /&gt;
* POR/BOR &lt;br /&gt;
* PCNT &lt;br /&gt;
* LVD &lt;br /&gt;
* LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Lpm_GotoDeepSleep(boolean_t bOnExit)&lt;br /&gt;
{&lt;br /&gt;
    SCB-&amp;gt;SCR |= SCB_SCR_SLEEPDEEP_Msk;&lt;br /&gt;
    SCB-&amp;gt;SCR |= 1u&amp;lt;&amp;lt;bOnExit;&lt;br /&gt;
    __WFI();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
aeco-goxp v1.2 实测功耗：&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input + 下拉，约 2uA&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input + 下拉，开启 10s RTC 中断，约 5uA&lt;br /&gt;
** PC14, INPUT_PULLUP, key_irq_handler() 开启后 低于 1uA (rtc_int)&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input (串口 TX 配为输出） + 下拉，开启 10s RTC 中断，约 100uA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UART ==&lt;br /&gt;
&lt;br /&gt;
《HC32L130 / HC32L136 / HC32F030 系列硬件开发指南》：&lt;br /&gt;
&lt;br /&gt;
* PA09 --- UART0_TX&lt;br /&gt;
* PA10 --- UART0_RX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SPI ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LP Timer ==&lt;br /&gt;
&lt;br /&gt;
Low Power Timer 低功耗计时器&lt;br /&gt;
&lt;br /&gt;
LPTimer 的定时器支持两种工作模式，通过设置定时器控制寄存器（CR）中 MD 选择工作模式：&lt;br /&gt;
* 模式 1 为 16 bit 自由计数模式&lt;br /&gt;
* 模式 2 是 16 bit 重载模式&lt;br /&gt;
&lt;br /&gt;
LPTimer 启动时会自动装载重载寄存器 ARR 的值到计数器中。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''计数功能'''：用于测定某个事件发生的次数。计数到最大值会溢出并且产生中断。计数器在每个相应的输入时钟的下降沿累加一次。输入信号被内部的计数时钟采样，因此外部输入时钟频率不能超过系统的计数时钟。 &lt;br /&gt;
* '''定时功能'''：用于产生间隔定时。在定时功能中，定时器一个时钟累加一次，计数到最大值会溢出并且产生中断。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ADC ==&lt;br /&gt;
&lt;br /&gt;
HC32L130F8UA 含有 8 个 12bit ADC&lt;br /&gt;
&lt;br /&gt;
https://bbs.21ic.com/icview-2817282-1-1.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WDT ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
// WDT 中断服务程序&lt;br /&gt;
extern &amp;quot;C&amp;quot;&lt;br /&gt;
void Wdt_IRQHandler(void)&lt;br /&gt;
{&lt;br /&gt;
    if(Wdt_GetIrqStatus()) {&lt;br /&gt;
        Wdt_IrqClr();       // 清除 wdt 中断标记&lt;br /&gt;
&lt;br /&gt;
        u8Flag = ~u8Flag;&lt;br /&gt;
        if(u8Flag) {&lt;br /&gt;
            Gpio_WriteOutputIO(STK_LED_PORT, STK_LED_PIN, TRUE);&lt;br /&gt;
        } else {&lt;br /&gt;
            Gpio_WriteOutputIO(STK_LED_PORT, STK_LED_PIN, FALSE);&lt;br /&gt;
        }&lt;br /&gt;
        u32CountWdt++;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
static void App_WdtInit(void)&lt;br /&gt;
{&lt;br /&gt;
    // 开启WDT外设时钟&lt;br /&gt;
    Sysctrl_SetPeripheralGate(SysctrlPeripheralWdt,TRUE);&lt;br /&gt;
    // WDT 初始化&lt;br /&gt;
    Wdt_Init(WdtIntEn, WdtT820ms);&lt;br /&gt;
    // 开启NVIC中断&lt;br /&gt;
    EnableNvic(WDT_IRQn, IrqLevel3, TRUE);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* https://www.hdsc.com.cn/list/71/35.htm&lt;br /&gt;
* https://hdsc.com.cn/cn/index/listView/catid/94/cdk/56a757q!57yW56iL&lt;br /&gt;
* HC32L130_HC32L136系列数据手册Rev1.9.pdf&lt;br /&gt;
* HC32L130_硬件开发指南.pdf&lt;br /&gt;
* HC32L130_HC32L136系列用户手册Rev2.31.pdf&lt;br /&gt;
* [https://vivonomicon.com/2018/04/02/bare-metal-stm32-programming-part-1-hello-arm/ &amp;quot;Bare Metal&amp;quot; STM32 Programming]&lt;br /&gt;
* [https://www.geeksforgeeks.org/memory-layout-of-c-program/ Memory Layout of C Programs]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/Camera</id>
		<title>Camera</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/Camera"/>
				<updated>2026-04-28T03:28:50Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* GC4653 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
RTSP Server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
基于 RTSP 协议的 IoT 平台监控&lt;br /&gt;
&lt;br /&gt;
* 选择支持RTSP网络摄像头（标准H.264 RTP封装的设备）。&lt;br /&gt;
* 按照摄像头的使用说明书部署。假设访问IP地址是：http://192.168.0.64，登录后设置输出端口为：81，则完整的取流地址为：   　&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
主码流： rtsp://admin:12345@192.0.0.64:81/h264/ch1/main/av_streamrtsp://admin:12345@192.0.0.64:81/MPEG-4/ch1/main/av_stream&lt;br /&gt;
子码流： rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_streamrtsp://admin:12345@192.0.0.64/h264/ch1/sub/av_stream&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 使用 VLC（支持标准的RTSP流媒体）播放器即可实时播放&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sensors ==&lt;br /&gt;
&lt;br /&gt;
=== GC0308 ===&lt;br /&gt;
&lt;br /&gt;
* 1/6.5'', 3.4umx3.4um&lt;br /&gt;
* 648x488, 30MP, 30fps @VGA&lt;br /&gt;
* RAW10bit / 8bit, 10 bit ADC&lt;br /&gt;
* DVP&lt;br /&gt;
* Single power supply requirement 2.7 ~ 3.3V typical 2.8V&lt;br /&gt;
* 70mW@30fps VGA, 10uA@standby&lt;br /&gt;
* -30℃ to +80℃&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GC2053 ===&lt;br /&gt;
&lt;br /&gt;
* 1/2.9'', 2.8umx2.8um&lt;br /&gt;
* 1920x1080, 200MP, 30fps @1920x1080&lt;br /&gt;
* RAW10bit / 8bit, 10 bit ADC&lt;br /&gt;
* Electronic Rolling Shutter&lt;br /&gt;
* MIPI (2lane) &amp;amp; DVP interface&lt;br /&gt;
* AVCC 2.8V, DVCC 1.2V, IOVCC 1.8V&lt;br /&gt;
* Dynamic range: 81dB&lt;br /&gt;
* Input clock freq: 6~27MHz&lt;br /&gt;
* 98mW&lt;br /&gt;
* -20℃ to +80℃&lt;br /&gt;
* Stable Image temperature: 0℃~ 60℃&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GC2093 ===&lt;br /&gt;
&lt;br /&gt;
* 1/2.9'', 2.8umx2.8um&lt;br /&gt;
* 1920x1080, 200MP, '''60fps''' @1920x1080&lt;br /&gt;
* RAW10bit / 8bit, 10 bit ADC&lt;br /&gt;
* Electronic Rolling Shutter&lt;br /&gt;
* MIPI (2lane) &amp;amp; DVP interface&lt;br /&gt;
* AVCC 2.8V, DVCC 1.2V, IOVCC 1.8V&lt;br /&gt;
* Dynamic range: 81dB (linear), 105dB (HDR)&lt;br /&gt;
* Input clock freq: 6~27MHz&lt;br /&gt;
* ? mW&lt;br /&gt;
* -30℃ ~ 85℃&lt;br /&gt;
* Stable Image temperature: 0℃~ 60℃&lt;br /&gt;
&lt;br /&gt;
与 GC2053 PIN to PIN 兼容，应可替换&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GC4603 (捡漏5个) ===&lt;br /&gt;
&lt;br /&gt;
* 1/3.2'', 1.9umx1.9um&lt;br /&gt;
* 2560x1440, 400MP, 30fps @2560x1440&lt;br /&gt;
* RAW12/10, 12 bit ADC&lt;br /&gt;
* MIPI 2lane &amp;amp; DVP interface&lt;br /&gt;
* AVCC 2.8V, DVCC 1.5V, IOVCC 1.7~3.0V&lt;br /&gt;
* 10 bit ADC&lt;br /&gt;
* Dynamic range: 70dB&lt;br /&gt;
* 150mW&lt;br /&gt;
* -20℃ to +80℃&lt;br /&gt;
* 28pin PLCC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GC4653 ===&lt;br /&gt;
&lt;br /&gt;
* 1/3'', 2umx2um&lt;br /&gt;
* 2560x1440, 400MP, 30fps @2560x1440&lt;br /&gt;
* RAW12/10, 12 bit ADC&lt;br /&gt;
* MIPI 2lane &amp;amp; DVP interface&lt;br /&gt;
* AVCC 2.8V, DVCC 1.2V, IOVCC 1.8V&lt;br /&gt;
* 10/12 bit ADC&lt;br /&gt;
* Dynamic range: 81dB&lt;br /&gt;
* Input clock freq: 6~36MHz&lt;br /&gt;
* 120mW&lt;br /&gt;
* -20℃ to +80℃&lt;br /&gt;
* 40pin CSP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OS04A10 ===&lt;br /&gt;
&lt;br /&gt;
* 1/1.79'' （对角线约9.02mm）&lt;br /&gt;
* 2688x1520, 400MP, 30fps @2688x1520&lt;br /&gt;
* MIPI / LVDS&lt;br /&gt;
* AVCC 2.8V, DVCC 1.2V, IOVCC 1.8V&lt;br /&gt;
* 300mW&lt;br /&gt;
* -30℃ to +85℃&lt;br /&gt;
&lt;br /&gt;
https://www.pdapply.com/archives/datasheet-os-os04a10&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IMX ===&lt;br /&gt;
&lt;br /&gt;
* [http://support.hkvstar.com/file/IMX323LQ-C.pdf IMX323 Datasheet]&lt;br /&gt;
* [https://dashcamtalk.com/cams/lk-7950-wd/Sony_IMX322.pdf IMX322 Datasheet]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/fritz-smh/yi-hack&lt;br /&gt;
* https://github.com/niclet/yi-hack-v2&lt;br /&gt;
* https://github.com/shadow-1/yi-hack-v3&lt;br /&gt;
* https://github.com/TheCrypt0/yi-hack-v4&lt;br /&gt;
* https://github.com/deltaflyer4747/Xiaomi_Yi&lt;br /&gt;
* https://github.com/YITechnology/YIOpenAPI&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/HC32</id>
		<title>HC32</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/HC32"/>
				<updated>2026-04-10T03:55:09Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* DeepSleep Mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;默认使用'''小端''' (Little Endian)&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://hdsc.com.cn/Category82&lt;br /&gt;
* [https://developer.arm.com/tools-and-software/embedded/cmsis ARM CMSIS]&lt;br /&gt;
* [https://arm-software.github.io/CMSIS_5/Core/html/templates_pg.html CMSIS github doc]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1590 HC32D391FEUA-TFN32TR] 192KB RAM，512KB Flash, up to 200MHz Cortex-M4, QFN32 4x4mm, 1.8-3.6V, 数据计算单元(Data Computing Unit)，USB 2.0fs, I2S, 40nm eFlashULP工艺&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://www.hdsc.com.cn/Category83-1499?All=1 HC32F4A0PITB-LQFP100] 516KB RAM, 2048KB Flash, up to 240MHz Cotex-M4, LQFP100 14x14mm [https://www.hdsc.com.cn/Category82?All=1 All]&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1501 HC32F4A0SGHB-VFBGA176] 516KB RAM, 1024KB Flash, up to 240MHz Cortex-M4, VFBGA176 10×10mm, 1.8-3.6V, USB, CAN, I2S, SDIO&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1497 HC32F4A0SIHB-VFBGA176] 516KB RAM, 2048KB Flash, up to 240MHz Cortex-M4, VFBGA176 10×10mm, 1.8-3.6V, USB, CAN, I2S, SDIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://product.sitimechina.com/uploadfile/images/202103/202103231149138817.pdf SiT1630]  &amp;lt;-----&amp;gt; SiT1533&lt;br /&gt;
* [http://product.sitimechina.com/product_list.php?id=1 32.768KHz 抗振动]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  HC32L130F8UA ==&lt;br /&gt;
&lt;br /&gt;
更抗灰、抗潮的封装： HC32L130E8PA (TSSOP-28, 10x7mm), HC32L130J8TA (LQFP-48, 7x7mm)&lt;br /&gt;
&lt;br /&gt;
* Cortex-M0+, Up to 48MHz&lt;br /&gt;
* 8KB RAM, 64KB Flash&lt;br /&gt;
* UART x2, LPUART x1, SPI x1, I2C x2, PWM x10&lt;br /&gt;
* AES-128, TRNG&lt;br /&gt;
*  0.9μA @3V 深度休眠模式+ RTC 工作&lt;br /&gt;
* 130μA/MHz@3V@24MHz 工作模式：CPU 和外设运行，从 Flash 运行程序&lt;br /&gt;
* -40 ~ 85 'C&lt;br /&gt;
* 1.8 ~ 5.5V&lt;br /&gt;
* QFN32, 4x4mm&lt;br /&gt;
&lt;br /&gt;
[[文件:HC32L130-QFN32.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
引脚规划参考官方文档：《HC32L130 / HC32L136 / HC32F030 系列硬件开发指南》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PB0 - AIN8/VC0_INN10/VC1_INN6/SEG13&lt;br /&gt;
* PB1 - AIN9/EXVREF/VC1_INP6/VC1_INN7/SEG12&lt;br /&gt;
* PB6 - I2C0_SCL (SEL1)&lt;br /&gt;
* PB7 - I2C0_SDA (SEL1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PA04 - SPI0_CS (SEL1)&lt;br /&gt;
* PA05 - SPI0_CLK (SEL1)&lt;br /&gt;
* PA06 - SPI0_MISO (SEL1)&lt;br /&gt;
* PA07 - SPI0_MOSI (SEL1)&lt;br /&gt;
&lt;br /&gt;
* PA09 -  UART0_TXD (SEL1)&lt;br /&gt;
* PA10 -  UART0_RXD (SEL1)&lt;br /&gt;
&lt;br /&gt;
* PA14 -  UART0_TXD (SEL2) - SWCLK&lt;br /&gt;
* PA13 -  UART0_RXD (SEL2) - SWDIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PB0/PB1, PB4/PB5: I2C1&lt;br /&gt;
&lt;br /&gt;
* PD0/PD1 as UART1_TX/RX (SEL3) ------------------------&amp;gt; M_RX / M_TX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
[[文件:HC32L130-mini-sys.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MODE (模式) PIN ==&lt;br /&gt;
&lt;br /&gt;
在正常情况下，必须通过电阻（推荐 10KΩ）将 MODE Pin (PD03/MD)下拉到 GND。&lt;br /&gt;
&lt;br /&gt;
* MODE (PD03)为高电平时，Power Reset 或硬件 Reset，则芯片进入在线编程模式（如加上跳帽使 MODE Pin 置位于高电平），通过上位机可以进行在线编程；&lt;br /&gt;
* MODE (PD03)为低电平时，芯片进入用户模式。&lt;br /&gt;
&lt;br /&gt;
PD03/MD 用户可用作输入端口，但是在 NRST 有效期间（即 RESETB 为低电平期间）必须保持低电平，否则 NRST 解除后（即 RESETB 变为高电平），芯片会误进入在线编程模式（Boot Mode）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 当复位时 BOOT0（PD03）管脚为高电平，芯片工作于 ISP 编程模式，可通过 ISP 协议对 Flash 进行编程。&lt;br /&gt;
* 当复位时 BOOT0（PD03）管脚为低电平，芯片工作于用户模式，芯片执行 Flash 内的程序代码，可通过 SWD 协议对 Flash 进行编程。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''注意：'''&lt;br /&gt;
&lt;br /&gt;
- 建议预留 PA9、PA10 作为 ISP 编程接口，如需使用 PA13、PA14 作为 ISP 编程接口请参见 PCN：[https://hdsc.com.cn/Public/Uploads/uploadfile/files/20200723/20200723142051_5f192c43a9684.pdf PCN20191230-1_HC32L130HC32F030HC32L136]  提高烧录速度。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
&lt;br /&gt;
=== Compier ===&lt;br /&gt;
&lt;br /&gt;
* toolchain/gcc-arm-none-eabi/bin/&lt;br /&gt;
** arm-none-eabi-gcc&lt;br /&gt;
** arm-none-eabi-g++&lt;br /&gt;
** arm-none-eabi-gdb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* toolchain/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/&lt;br /&gt;
** libc.a&lt;br /&gt;
** libstdc++.a&lt;br /&gt;
** libm.a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
查看生成的变量地址：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-nm -n build/main.elf  | grep k&lt;br /&gt;
00000108 T _Z15key_irq_handlerv&lt;br /&gt;
00000190 T SystemCoreClockUpdate&lt;br /&gt;
000001a0 T systick_init&lt;br /&gt;
00000368 W _sbrk&lt;br /&gt;
000003a0 T _kill&lt;br /&gt;
000003d0 T _lseek&lt;br /&gt;
000003f0 T _link&lt;br /&gt;
00000958 T Sysctrl_GetHClkFreq&lt;br /&gt;
00000a78 T Sysctrl_GetPClkFreq&lt;br /&gt;
00000b2c T SysTick_Handler&lt;br /&gt;
0000144c T _sbrk_r&lt;br /&gt;
00001470 T __malloc_lock&lt;br /&gt;
00001472 T __malloc_unlock&lt;br /&gt;
00001498 t .udivsi3_skip_div0_test&lt;br /&gt;
000015ac t .divsi3_skip_div0_test&lt;br /&gt;
20000000 D SystemCoreClock&lt;br /&gt;
20000004 d _tx_ok&lt;br /&gt;
20000094 B k&lt;br /&gt;
200001a8 b secTicks&lt;br /&gt;
200001b0 B __malloc_sbrk_start&lt;br /&gt;
200001b4 B msTicks_cnt&lt;br /&gt;
200001b8 B msTicks&lt;br /&gt;
200005c0 ? stack&lt;br /&gt;
20001c00 A __StackLimit&lt;br /&gt;
20002000 A __stack&lt;br /&gt;
20002000 B __StackTop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
查看 .data .bss 段大小：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
   9740     124     324   10188    27cc build/main.elf&lt;br /&gt;
&lt;br /&gt;
set the global var 'int k = 0':&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
   9760     120     328   10208    27e0 build/main.elf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* .data：初始值存储在 Flash 中，启动时复制到 RAM&lt;br /&gt;
* .bss：只需要记录大小信息，不需要在 Flash 中存储 0 值。（Block Started by Symbol）段存放：&lt;br /&gt;
** '''未初始化'''的'''全局变量'''&lt;br /&gt;
** '''未初始化'''的静态变量&lt;br /&gt;
** '''初始化为 0''' 的变量（包括静态变量）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
FLASH 存储器：&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .text (代码)  |&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .rodata (常量)|&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .data (初始值)|&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | ...           |&lt;br /&gt;
    +---------------+&lt;br /&gt;
&lt;br /&gt;
RAM 存储器：&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .data (副本)  | ← 从 Flash 复制过来&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .bss          | ← 启动时清零&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | 堆 (heap)     |&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | 栈 (stack)    |&lt;br /&gt;
    +---------------+&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Uploader ===&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/milton/p/16586831.html HC32L110(二) HC32L110 在 Ubuntu 下使用 J-Link 烧录]&lt;br /&gt;
&lt;br /&gt;
==== J-Link ====&lt;br /&gt;
&lt;br /&gt;
从 https://github.com/hdscmcu/pack 获取 HDSC.HC32L130.1.0.1.pack，这是个 zip 包，改名为 L130.zip 后 unzip 解压：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ find .&lt;br /&gt;
./Device/Include/HC32L130E8PA.h&lt;br /&gt;
./Device/Include/HC32L130F8UA.h&lt;br /&gt;
./Device/Include/HC32L130J8TA.h&lt;br /&gt;
./Device/Include/system_hc32l130.h&lt;br /&gt;
./Device/Source/ARM/startup_hc32l130.s&lt;br /&gt;
./Device/Source/main.c&lt;br /&gt;
./Device/Source/system_hc32l130.c&lt;br /&gt;
./Flash/FlashHC32L130_64K.FLM&lt;br /&gt;
./HDSC.HC32L130.pdsc    # XML 描述文件&lt;br /&gt;
./SVD/HC32L130E8PA.sfr&lt;br /&gt;
./SVD/HC32L130F8UA.sfr&lt;br /&gt;
./SVD/HC32L130J8TA.sfr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
将 FlashHC32L130_64K.FLM 改名为 HC32L130_64K.FLM，放在：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;  &lt;br /&gt;
$ find /c/Program\ Files\ \(x86\)/SEGGER/JLink/Devices/HDSC/&lt;br /&gt;
/c/Program Files (x86)/SEGGER/JLink/Devices/HDSC/HC32L130_64K.FLM&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/c/Program\ Files\ \(x86\)/SEGGER/JLink/JLinkDevices.xml 增加：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Huada (HDSC) --&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L110x4&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x800&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_16K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x4000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L110B4_C4.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L110x6&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x1000&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_32K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x8000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L110B6_C6.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L130&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x2000&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_64K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x10000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L130_64K.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
则可使用 J-Flash 烧写：&lt;br /&gt;
&lt;br /&gt;
* MCU 选 HC32L130，SWD 4000KHz&lt;br /&gt;
* Target -&amp;gt; Connect&lt;br /&gt;
* Target -&amp;gt; Production Programming（快捷键 F7）&lt;br /&gt;
* Target -&amp;gt; Manual Programming -&amp;gt; Start Application（快捷键 F9）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JLink 命令行方式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat  ../../toolchain/jlink-flash.cmd&lt;br /&gt;
erase&lt;br /&gt;
loadfile build/main.hex&lt;br /&gt;
r&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$ /c/SEGGER/JLink/JLink.exe -device HC32L130 -if swd -speed 4000 -CommanderScript ../../toolchain/jlink-flash.cmd&lt;br /&gt;
SEGGER J-Link Commander V6.72c (Compiled May  8 2020 17:22:54) DLL version V6.72c, compiled May  8 2020 17:21:59&lt;br /&gt;
&lt;br /&gt;
J-Link Command File read successfully.&lt;br /&gt;
Processing script file...&lt;br /&gt;
&lt;br /&gt;
J-Link connection not established yet but required for command.&lt;br /&gt;
Connecting to J-Link via USB...O.K.&lt;br /&gt;
Firmware: J-Link V9 compiled Dec 13 2019 11:14:50&lt;br /&gt;
Hardware version: V9.30&lt;br /&gt;
S/N: 36310083&lt;br /&gt;
License(s): RDI, GDB, FlashDL, FlashBP, JFlash&lt;br /&gt;
VTref=3.300V&lt;br /&gt;
Target connection not established yet but required for command.&lt;br /&gt;
Device &amp;quot;HC32L130&amp;quot; selected.&lt;br /&gt;
&lt;br /&gt;
Connecting to target via SWD&lt;br /&gt;
Found SW-DP with ID 0x0BC11477&lt;br /&gt;
Unknown DP version. Assuming DPv0&lt;br /&gt;
Scanning AP map to find all available APs&lt;br /&gt;
AP[1]: Stopped AP scan as end of AP map has been reached&lt;br /&gt;
AP[0]: AHB-AP (IDR: 0x04770031)&lt;br /&gt;
Iterating through AP map to find AHB-AP to use&lt;br /&gt;
AP[0]: Core found&lt;br /&gt;
AP[0]: AHB-AP ROM base: 0xE00FF000&lt;br /&gt;
CPUID register: 0x410CC601. Implementer code: 0x41 (ARM)&lt;br /&gt;
Found Cortex-M0 r0p1, Little endian.&lt;br /&gt;
FPUnit: 4 code (BP) slots and 0 literal slots&lt;br /&gt;
CoreSight components:&lt;br /&gt;
ROMTbl[0] @ E00FF000&lt;br /&gt;
ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS&lt;br /&gt;
ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT&lt;br /&gt;
ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB&lt;br /&gt;
Cortex-M0 identified.&lt;br /&gt;
Erasing device...&lt;br /&gt;
J-Link: Flash download: Total time needed: 0.189s (Prepare: 0.110s, Compare: 0.000s, Erase: 0.075s, Program: 0.000s, Verify: 0.000s, Restore: 0.003s)&lt;br /&gt;
Erasing done.&lt;br /&gt;
&lt;br /&gt;
Downloading file [build/main.hex]...&lt;br /&gt;
J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (10752 bytes)&lt;br /&gt;
J-Link: Flash download: Total time needed: 1.095s (Prepare: 0.017s, Compare: 0.134s, Erase: 0.299s, Program: 0.570s, Verify: 0.060s, Restore: 0.012s)&lt;br /&gt;
O.K.&lt;br /&gt;
&lt;br /&gt;
Reset delay: 0 ms&lt;br /&gt;
Reset type NORMAL: Resets core &amp;amp; peripherals via SYSRESETREQ &amp;amp; VECTRESET bit.&lt;br /&gt;
Reset: Halt core after reset via DEMCR.VC_CORERESET.&lt;br /&gt;
Reset: Reset device via AIRCR.SYSRESETREQ.&lt;br /&gt;
&lt;br /&gt;
Script processing completed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
或者：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat up.cmd&lt;br /&gt;
device HC32L130&lt;br /&gt;
si SWD&lt;br /&gt;
speed 4000&lt;br /&gt;
connect&lt;br /&gt;
erase&lt;br /&gt;
loadfile build/main.hex&lt;br /&gt;
r&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$ /c/SEGGER/JLink/JLink.exe -CommanderScript ./up.cmd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UART ====&lt;br /&gt;
&lt;br /&gt;
* https://github.com/kicer/hc32flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STLINK ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.51hei.com/bbs/dpj-194723-1.html pyOCD]&lt;br /&gt;
&lt;br /&gt;
* https://www.cnblogs.com/milton/p/16586831.html&lt;br /&gt;
* https://github.com/IOsetting/hc32l110-template&lt;br /&gt;
* https://gitcode.com/open-source-toolkit/8cb1a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linker Script ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
MEMORY&lt;br /&gt;
{&lt;br /&gt;
    FLASH ( rx )      : ORIGIN = 0x00000000, LENGTH = 64K&lt;br /&gt;
    RAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 8K&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.vectors (Vector Table) 位于 Flash 开始处，Flash 上代码段 .text 之前：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
ENTRY(Reset_Handler)&lt;br /&gt;
&lt;br /&gt;
SECTIONS&lt;br /&gt;
{&lt;br /&gt;
  .text :&lt;br /&gt;
  {&lt;br /&gt;
    KEEP(*(.vectors))&lt;br /&gt;
    __Vectors_End = .;&lt;br /&gt;
    __Vectors_Size = __Vectors_End - __Vectors;&lt;br /&gt;
    __end__ = .;&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arch/hc32/common/startup_hc32l13x.c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
  Exception / Interrupt Vector table&lt;br /&gt;
 *----------------------------------------------------------------------------*/&lt;br /&gt;
const pFunc __Vectors[] __attribute__ ((section(&amp;quot;.vectors&amp;quot;))) = {&lt;br /&gt;
    /* Cortex-M Exception Handlers */&lt;br /&gt;
    (pFunc)&amp;amp;__StackTop,                       /*      Initial Stack Pointer     */&lt;br /&gt;
    Reset_Handler,                            /*      Reset Handler             */&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bare Metal ==&lt;br /&gt;
&lt;br /&gt;
=== Reset Handler ===&lt;br /&gt;
&lt;br /&gt;
hc32/variants/hc32l130f8ua/hc32l130f8ua.ld (Link Script) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
ENTRY(Reset_Handler)&lt;br /&gt;
&lt;br /&gt;
SECTIONS&lt;br /&gt;
{&lt;br /&gt;
  .text :&lt;br /&gt;
  {&lt;br /&gt;
    KEEP(*(.vectors))&lt;br /&gt;
    __Vectors_End = .;&lt;br /&gt;
    __Vectors_Size = __Vectors_End - __Vectors;&lt;br /&gt;
    __end__ = .;&lt;br /&gt;
    *(.text*)&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hc32/common/startup_hc32l13x.c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Reset_Handler(void) {&lt;br /&gt;
&lt;br /&gt;
    uint32_t *pSrc, *pDest;&lt;br /&gt;
    uint32_t *pTable __attribute__((unused));&lt;br /&gt;
&lt;br /&gt;
    SystemInit();&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * Single section scheme.&lt;br /&gt;
     *&lt;br /&gt;
     *  The ranges of copy from/to are specified by following symbols&lt;br /&gt;
     *    __etext: LMA of start of the section to copy from. Usually end of text&lt;br /&gt;
     *    __data_start__: VMA of start of the section to copy to&lt;br /&gt;
     *    __data_end__: VMA of end of the section to copy to&lt;br /&gt;
     *&lt;br /&gt;
     *  All addresses must be aligned to 4 bytes boundary.&lt;br /&gt;
    */&lt;br /&gt;
    pSrc  = &amp;amp;__etext;&lt;br /&gt;
    pDest = &amp;amp;__data_start__;&lt;br /&gt;
&lt;br /&gt;
    for ( ; pDest &amp;lt; &amp;amp;__data_end__ ; ) {&lt;br /&gt;
        *pDest++ = *pSrc++;&lt;br /&gt;
    }&lt;br /&gt;
    __START();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SystemInit() ===&lt;br /&gt;
&lt;br /&gt;
'''位于 hc32/common/system_hc32l13x.c:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void SystemInit(void)&lt;br /&gt;
{&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCL_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C22ul)));&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCH_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C08ul)));&lt;br /&gt;
    SystemCoreClockUpdate();&lt;br /&gt;
    _HidePinInit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Makefile ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
-D__START=main&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SystemInit() ==&lt;br /&gt;
&lt;br /&gt;
'''位于 hc32/common/system_hc32l13x.c:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void SystemInit(void)&lt;br /&gt;
{&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCL_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C22ul)));&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCH_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C08ul)));&lt;br /&gt;
    SystemCoreClockUpdate();&lt;br /&gt;
    _HidePinInit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系统时钟 (SystemClk) ===&lt;br /&gt;
&lt;br /&gt;
HC32L13x 支持以下五种时钟源作为系统时钟：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
SysctrlClkRCH  = 0u,       // 内部 RC 高速时钟，输出频率为 4~24MHz&lt;br /&gt;
SysctrlClkXTH  = 1u,       // 外部晶振高速时钟，XTH 可以不接晶振，直接从 PD00 引脚输入 4~32MHz 的时钟信号&lt;br /&gt;
SysctrlClkRCL  = 2u,       // 内部 RC 低速时钟，可选频率：38.4K 与 32.768K。当系统进入 DeepSleep，此低速时钟不会自动关闭，超低功耗外设模块可以选择 RCL 作为其时钟。&lt;br /&gt;
SysctrlClkXTL  = 3u,       // 外部晶振低速时钟，XTL 可以不接晶振，直接从 PC14 引脚输入 32.768KHz 的时钟信号。当系统进入 Deep Sleep，此低速时钟不会自动关闭。超低功耗模式下工作的&lt;br /&gt;
                           // 外设模块可以选择 XTL 作为其时钟。&lt;br /&gt;
SysctrlClkPLL  = 4u,       // 锁相环 PLL 时钟&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
还有两个辅助时钟：&lt;br /&gt;
* 内部低速 10K 时钟；仅供 WatchDog 和 CLKTRIM 模块使用。&lt;br /&gt;
* 内部 150K 时钟：仅供 LVD 和 VC 模块使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''芯片上电或复位后的默认时钟源为 4MHz 的内部 RCH 时钟'''；当系统进入 Deep Sleep，此高速时钟会自动关闭。&lt;br /&gt;
&lt;br /&gt;
更改寄存器 RCH_CR[10:0]的数值即可调整 RCH 的输出频率。寄存器数值每增加 1 则 RCH 的输出频率增加约 0.2%，总调整范围为 4~24MHz。更改 RCH 输出频率需要按照特定的更改时序，详见系统时钟切换章节。&lt;br /&gt;
&lt;br /&gt;
内部高速时钟 RCH 从启动到稳定仅需 4us。为了在深度休眠模式下能快速响应中断，建议进入深度休眠模式前将系统时钟切换为 RCH。&lt;br /&gt;
&lt;br /&gt;
RCL 默认启用 RCL_CR_TRIM_32768_VAL (32.768kHz)，可通过设置 RCL_CR 其为 RCL_CR_TRIM_38400_VAL (38.4kHz)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCLK 时钟 ===&lt;br /&gt;
&lt;br /&gt;
主供 CPU 核心。位于SYSCTRL 的 SYSCTRL0 寄存器&lt;br /&gt;
&lt;br /&gt;
'''HCLK 时钟来源选择:''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
000： SystemClk         /* reset value */&lt;br /&gt;
001： SystemClk/2 &lt;br /&gt;
010： SystemClk/4 &lt;br /&gt;
011： SystemClk/8 &lt;br /&gt;
100： SystemClk/16 &lt;br /&gt;
101： SystemClk/32 &lt;br /&gt;
110： SystemClk/64 &lt;br /&gt;
111： SystemClk/128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLK 时钟 ===&lt;br /&gt;
&lt;br /&gt;
主供外设。位于SYSCTRL 的 SYSCTRL0 寄存器&lt;br /&gt;
&lt;br /&gt;
'''PCLK 时钟来源选择:''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00： HCLK         /* reset value */&lt;br /&gt;
01： HCLK/2 &lt;br /&gt;
10： HCLK/4 &lt;br /&gt;
11： HCLK/8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SysTick 定时器 ==&lt;br /&gt;
&lt;br /&gt;
SysTick 为 24 位的定时器，向下计数。定时器的计数减到 0 后，就会重新装载一个可编程的数值，同时产生 SysTick 异常（异常编号为 15）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
MCU 的 GPIO 是通过 CMOS 的 PMOS 输出高电平，NMOS 输出低电平。&lt;br /&gt;
&lt;br /&gt;
内部上拉电阻也是一个 PMOS，引脚输出时，PMOS 或 NMOS 工作在线性区域，其等效导通电阻随着 MCU 的 VCC 变化而变化。到 MCU 工作下限电压附近时，其导通电阻会急剧变化，表象上看就是驱动能力急剧下降，上拉电阻也变大&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
芯片复位后端口为高阻输入，目的是防止芯片被异常复位时，对外部器件产生异常动作。但为了避免高阻输入而产生的漏电，用户要在芯片启动之后对端口进行相应的配置（配置成内部拉高/拉低输入或者输出）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt ==&lt;br /&gt;
&lt;br /&gt;
嵌套向量中断控制器 (NVIC) ，支持 32 个外部中断请求（IRQ）， 1 个不可屏蔽中断（NMI）&lt;br /&gt;
&lt;br /&gt;
Cortex-M0+ 的中断向量表，位于存储器空间的开始位置，注意主栈指针（MSP）的初始值位于第一个入口：&lt;br /&gt;
&lt;br /&gt;
[[文件:Cortex-m0plus-int-vec-table.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
中断号定义于 '''arch/hc32/common/hc32l13x.h:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/* Interrupt Number Definition */&lt;br /&gt;
typedef enum IRQn&lt;br /&gt;
{&lt;br /&gt;
    NMI_IRQn            = -14, /*  2 Non Maskable                            */&lt;br /&gt;
    HardFault_IRQn      = -13, /*  3 Hard Fault                              */&lt;br /&gt;
    SVC_IRQn            = -5,  /* 11 SV Call                                 */&lt;br /&gt;
    PendSV_IRQn         = -2,  /* 14 Pend SV                                 */&lt;br /&gt;
    SysTick_IRQn        = -1,  /* 15 System Tick                             */&lt;br /&gt;
&lt;br /&gt;
    PORTA_IRQn          = 0 ,&lt;br /&gt;
    PORTB_IRQn          = 1 ,&lt;br /&gt;
    PORTC_IRQn          = 2 ,&lt;br /&gt;
    PORTD_IRQn          = 3 ,&lt;br /&gt;
    DMAC_IRQn           = 4 ,&lt;br /&gt;
    TIM3_IRQn           = 5 ,&lt;br /&gt;
    UART0_IRQn          = 6 ,&lt;br /&gt;
    UART1_IRQn          = 7 ,&lt;br /&gt;
    LPUART0_IRQn        = 8 ,&lt;br /&gt;
    LPUART1_IRQn        = 9 ,&lt;br /&gt;
    SPI0_IRQn           = 10,&lt;br /&gt;
    SPI1_IRQn           = 11,&lt;br /&gt;
    I2C0_IRQn           = 12,&lt;br /&gt;
    I2C1_IRQn           = 13,&lt;br /&gt;
    TIM0_IRQn           = 14,&lt;br /&gt;
    TIM1_IRQn           = 15,&lt;br /&gt;
    TIM2_IRQn           = 16,&lt;br /&gt;
    LPTIM_IRQn          = 17,&lt;br /&gt;
    ADTIM4_IRQn         = 18,&lt;br /&gt;
    ADTIM5_IRQn         = 19,&lt;br /&gt;
    ADTIM6_IRQn         = 20,&lt;br /&gt;
    PCA_IRQn            = 21,&lt;br /&gt;
    WDT_IRQn            = 22,&lt;br /&gt;
    RTC_IRQn            = 23,&lt;br /&gt;
    ADC_IRQn            = 24,&lt;br /&gt;
    PCNT_IRQn           = 25,&lt;br /&gt;
    VC0_IRQn            = 26,&lt;br /&gt;
    VC1_IRQn            = 27,&lt;br /&gt;
    LVD_IRQn            = 28,&lt;br /&gt;
    LCD_IRQn            = 29,&lt;br /&gt;
    FLASH_RAM_IRQn      = 30,&lt;br /&gt;
    CLKTRIM_IRQn        = 31,&lt;br /&gt;
} IRQn_Type;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PortA, B, C, D 为 GPIO 中断处理入口&lt;br /&gt;
&lt;br /&gt;
四个口的对应寄存器：&lt;br /&gt;
* 中断状态寄存器 Px_STAT 地址分别为： 0x200, 0x240, 0x280, 0x2C0 (PA_STAT, PB_STAT, PC_STAT, PD_STAT)&lt;br /&gt;
* 中断清除寄存器 Px_ICLR 地址分别为： 0x210, 0x250, 0x290, 0x2D0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Low Power ==&lt;br /&gt;
&lt;br /&gt;
=== __WFI() ===&lt;br /&gt;
&lt;br /&gt;
Wait For Interrupt, 指令执行后，MCU 挂起，直到下一个中断出现。。。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/* Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs */&lt;br /&gt;
__attribute__((always_inline)) __STATIC_INLINE void __WFI(void)&lt;br /&gt;
{&lt;br /&gt;
  __ASM volatile (&amp;quot;wfi&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
中断出现、继续执行，下一条指令位于 __WFI() 之后，即返回 wfi 指令之所在&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sleep Mode ===&lt;br /&gt;
&lt;br /&gt;
CPU 核心不运行，其他外设都运行，aeco-goxp v1.2 约 200uA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Lpm_GotoSleep(boolean_t bOnExit)&lt;br /&gt;
{&lt;br /&gt;
    SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;br /&gt;
    SCB-&amp;gt;SCR |= 1u&amp;lt;&amp;lt;bOnExit;&lt;br /&gt;
    __WFI();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DeepSleep Mode ===&lt;br /&gt;
&lt;br /&gt;
进入此模式务必预留外部中断唤醒按钮应急使用！有靠谱的 Timer / RTC 定时中断亦可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DeepSleep 模式支持少量外设运行：&lt;br /&gt;
&lt;br /&gt;
* XTL &lt;br /&gt;
* RCL &lt;br /&gt;
* RESET&lt;br /&gt;
* WDT &lt;br /&gt;
* RTC &lt;br /&gt;
* LPUART0-1 &lt;br /&gt;
* GPIO &lt;br /&gt;
* VC0-1 &lt;br /&gt;
&lt;br /&gt;
* CLKTRIM &lt;br /&gt;
* LPTIM &lt;br /&gt;
* POR/BOR &lt;br /&gt;
* PCNT &lt;br /&gt;
* LVD &lt;br /&gt;
* LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Lpm_GotoDeepSleep(boolean_t bOnExit)&lt;br /&gt;
{&lt;br /&gt;
    SCB-&amp;gt;SCR |= SCB_SCR_SLEEPDEEP_Msk;&lt;br /&gt;
    SCB-&amp;gt;SCR |= 1u&amp;lt;&amp;lt;bOnExit;&lt;br /&gt;
    __WFI();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
aeco-goxp v1.2 实测功耗：&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input + 下拉，约 2uA&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input + 下拉，开启 10s RTC 中断，约 5uA&lt;br /&gt;
** PC14, INPUT_PULLUP, key_irq_handler() 开启后 低于 1uA (rtc_int)&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input (串口 TX 配为输出） + 下拉，开启 10s RTC 中断，约 100uA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UART ==&lt;br /&gt;
&lt;br /&gt;
《HC32L130 / HC32L136 / HC32F030 系列硬件开发指南》：&lt;br /&gt;
&lt;br /&gt;
* PA09 --- UART0_TX&lt;br /&gt;
* PA10 --- UART0_RX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SPI ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LP Timer ==&lt;br /&gt;
&lt;br /&gt;
Low Power Timer 低功耗计时器&lt;br /&gt;
&lt;br /&gt;
LPTimer 的定时器支持两种工作模式，通过设置定时器控制寄存器（CR）中 MD 选择工作模式：&lt;br /&gt;
* 模式 1 为 16 bit 自由计数模式&lt;br /&gt;
* 模式 2 是 16 bit 重载模式&lt;br /&gt;
&lt;br /&gt;
LPTimer 启动时会自动装载重载寄存器 ARR 的值到计数器中。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''计数功能'''：用于测定某个事件发生的次数。计数到最大值会溢出并且产生中断。计数器在每个相应的输入时钟的下降沿累加一次。输入信号被内部的计数时钟采样，因此外部输入时钟频率不能超过系统的计数时钟。 &lt;br /&gt;
* '''定时功能'''：用于产生间隔定时。在定时功能中，定时器一个时钟累加一次，计数到最大值会溢出并且产生中断。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ADC ==&lt;br /&gt;
&lt;br /&gt;
HC32L130F8UA 含有 8 个 12bit ADC&lt;br /&gt;
&lt;br /&gt;
https://bbs.21ic.com/icview-2817282-1-1.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* https://www.hdsc.com.cn/list/71/35.htm&lt;br /&gt;
* https://hdsc.com.cn/cn/index/listView/catid/94/cdk/56a757q!57yW56iL&lt;br /&gt;
* HC32L130_HC32L136系列数据手册Rev1.9.pdf&lt;br /&gt;
* HC32L130_硬件开发指南.pdf&lt;br /&gt;
* HC32L130_HC32L136系列用户手册Rev2.31.pdf&lt;br /&gt;
* [https://vivonomicon.com/2018/04/02/bare-metal-stm32-programming-part-1-hello-arm/ &amp;quot;Bare Metal&amp;quot; STM32 Programming]&lt;br /&gt;
* [https://www.geeksforgeeks.org/memory-layout-of-c-program/ Memory Layout of C Programs]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/HC32</id>
		<title>HC32</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/HC32"/>
				<updated>2026-04-10T03:45:53Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* DeepSleep Mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;默认使用'''小端''' (Little Endian)&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://hdsc.com.cn/Category82&lt;br /&gt;
* [https://developer.arm.com/tools-and-software/embedded/cmsis ARM CMSIS]&lt;br /&gt;
* [https://arm-software.github.io/CMSIS_5/Core/html/templates_pg.html CMSIS github doc]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1590 HC32D391FEUA-TFN32TR] 192KB RAM，512KB Flash, up to 200MHz Cortex-M4, QFN32 4x4mm, 1.8-3.6V, 数据计算单元(Data Computing Unit)，USB 2.0fs, I2S, 40nm eFlashULP工艺&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://www.hdsc.com.cn/Category83-1499?All=1 HC32F4A0PITB-LQFP100] 516KB RAM, 2048KB Flash, up to 240MHz Cotex-M4, LQFP100 14x14mm [https://www.hdsc.com.cn/Category82?All=1 All]&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1501 HC32F4A0SGHB-VFBGA176] 516KB RAM, 1024KB Flash, up to 240MHz Cortex-M4, VFBGA176 10×10mm, 1.8-3.6V, USB, CAN, I2S, SDIO&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1497 HC32F4A0SIHB-VFBGA176] 516KB RAM, 2048KB Flash, up to 240MHz Cortex-M4, VFBGA176 10×10mm, 1.8-3.6V, USB, CAN, I2S, SDIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://product.sitimechina.com/uploadfile/images/202103/202103231149138817.pdf SiT1630]  &amp;lt;-----&amp;gt; SiT1533&lt;br /&gt;
* [http://product.sitimechina.com/product_list.php?id=1 32.768KHz 抗振动]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  HC32L130F8UA ==&lt;br /&gt;
&lt;br /&gt;
更抗灰、抗潮的封装： HC32L130E8PA (TSSOP-28, 10x7mm), HC32L130J8TA (LQFP-48, 7x7mm)&lt;br /&gt;
&lt;br /&gt;
* Cortex-M0+, Up to 48MHz&lt;br /&gt;
* 8KB RAM, 64KB Flash&lt;br /&gt;
* UART x2, LPUART x1, SPI x1, I2C x2, PWM x10&lt;br /&gt;
* AES-128, TRNG&lt;br /&gt;
*  0.9μA @3V 深度休眠模式+ RTC 工作&lt;br /&gt;
* 130μA/MHz@3V@24MHz 工作模式：CPU 和外设运行，从 Flash 运行程序&lt;br /&gt;
* -40 ~ 85 'C&lt;br /&gt;
* 1.8 ~ 5.5V&lt;br /&gt;
* QFN32, 4x4mm&lt;br /&gt;
&lt;br /&gt;
[[文件:HC32L130-QFN32.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
引脚规划参考官方文档：《HC32L130 / HC32L136 / HC32F030 系列硬件开发指南》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PB0 - AIN8/VC0_INN10/VC1_INN6/SEG13&lt;br /&gt;
* PB1 - AIN9/EXVREF/VC1_INP6/VC1_INN7/SEG12&lt;br /&gt;
* PB6 - I2C0_SCL (SEL1)&lt;br /&gt;
* PB7 - I2C0_SDA (SEL1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PA04 - SPI0_CS (SEL1)&lt;br /&gt;
* PA05 - SPI0_CLK (SEL1)&lt;br /&gt;
* PA06 - SPI0_MISO (SEL1)&lt;br /&gt;
* PA07 - SPI0_MOSI (SEL1)&lt;br /&gt;
&lt;br /&gt;
* PA09 -  UART0_TXD (SEL1)&lt;br /&gt;
* PA10 -  UART0_RXD (SEL1)&lt;br /&gt;
&lt;br /&gt;
* PA14 -  UART0_TXD (SEL2) - SWCLK&lt;br /&gt;
* PA13 -  UART0_RXD (SEL2) - SWDIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PB0/PB1, PB4/PB5: I2C1&lt;br /&gt;
&lt;br /&gt;
* PD0/PD1 as UART1_TX/RX (SEL3) ------------------------&amp;gt; M_RX / M_TX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
[[文件:HC32L130-mini-sys.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MODE (模式) PIN ==&lt;br /&gt;
&lt;br /&gt;
在正常情况下，必须通过电阻（推荐 10KΩ）将 MODE Pin (PD03/MD)下拉到 GND。&lt;br /&gt;
&lt;br /&gt;
* MODE (PD03)为高电平时，Power Reset 或硬件 Reset，则芯片进入在线编程模式（如加上跳帽使 MODE Pin 置位于高电平），通过上位机可以进行在线编程；&lt;br /&gt;
* MODE (PD03)为低电平时，芯片进入用户模式。&lt;br /&gt;
&lt;br /&gt;
PD03/MD 用户可用作输入端口，但是在 NRST 有效期间（即 RESETB 为低电平期间）必须保持低电平，否则 NRST 解除后（即 RESETB 变为高电平），芯片会误进入在线编程模式（Boot Mode）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 当复位时 BOOT0（PD03）管脚为高电平，芯片工作于 ISP 编程模式，可通过 ISP 协议对 Flash 进行编程。&lt;br /&gt;
* 当复位时 BOOT0（PD03）管脚为低电平，芯片工作于用户模式，芯片执行 Flash 内的程序代码，可通过 SWD 协议对 Flash 进行编程。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''注意：'''&lt;br /&gt;
&lt;br /&gt;
- 建议预留 PA9、PA10 作为 ISP 编程接口，如需使用 PA13、PA14 作为 ISP 编程接口请参见 PCN：[https://hdsc.com.cn/Public/Uploads/uploadfile/files/20200723/20200723142051_5f192c43a9684.pdf PCN20191230-1_HC32L130HC32F030HC32L136]  提高烧录速度。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
&lt;br /&gt;
=== Compier ===&lt;br /&gt;
&lt;br /&gt;
* toolchain/gcc-arm-none-eabi/bin/&lt;br /&gt;
** arm-none-eabi-gcc&lt;br /&gt;
** arm-none-eabi-g++&lt;br /&gt;
** arm-none-eabi-gdb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* toolchain/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/&lt;br /&gt;
** libc.a&lt;br /&gt;
** libstdc++.a&lt;br /&gt;
** libm.a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
查看生成的变量地址：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-nm -n build/main.elf  | grep k&lt;br /&gt;
00000108 T _Z15key_irq_handlerv&lt;br /&gt;
00000190 T SystemCoreClockUpdate&lt;br /&gt;
000001a0 T systick_init&lt;br /&gt;
00000368 W _sbrk&lt;br /&gt;
000003a0 T _kill&lt;br /&gt;
000003d0 T _lseek&lt;br /&gt;
000003f0 T _link&lt;br /&gt;
00000958 T Sysctrl_GetHClkFreq&lt;br /&gt;
00000a78 T Sysctrl_GetPClkFreq&lt;br /&gt;
00000b2c T SysTick_Handler&lt;br /&gt;
0000144c T _sbrk_r&lt;br /&gt;
00001470 T __malloc_lock&lt;br /&gt;
00001472 T __malloc_unlock&lt;br /&gt;
00001498 t .udivsi3_skip_div0_test&lt;br /&gt;
000015ac t .divsi3_skip_div0_test&lt;br /&gt;
20000000 D SystemCoreClock&lt;br /&gt;
20000004 d _tx_ok&lt;br /&gt;
20000094 B k&lt;br /&gt;
200001a8 b secTicks&lt;br /&gt;
200001b0 B __malloc_sbrk_start&lt;br /&gt;
200001b4 B msTicks_cnt&lt;br /&gt;
200001b8 B msTicks&lt;br /&gt;
200005c0 ? stack&lt;br /&gt;
20001c00 A __StackLimit&lt;br /&gt;
20002000 A __stack&lt;br /&gt;
20002000 B __StackTop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
查看 .data .bss 段大小：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
   9740     124     324   10188    27cc build/main.elf&lt;br /&gt;
&lt;br /&gt;
set the global var 'int k = 0':&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
   9760     120     328   10208    27e0 build/main.elf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* .data：初始值存储在 Flash 中，启动时复制到 RAM&lt;br /&gt;
* .bss：只需要记录大小信息，不需要在 Flash 中存储 0 值。（Block Started by Symbol）段存放：&lt;br /&gt;
** '''未初始化'''的'''全局变量'''&lt;br /&gt;
** '''未初始化'''的静态变量&lt;br /&gt;
** '''初始化为 0''' 的变量（包括静态变量）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
FLASH 存储器：&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .text (代码)  |&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .rodata (常量)|&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .data (初始值)|&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | ...           |&lt;br /&gt;
    +---------------+&lt;br /&gt;
&lt;br /&gt;
RAM 存储器：&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .data (副本)  | ← 从 Flash 复制过来&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .bss          | ← 启动时清零&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | 堆 (heap)     |&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | 栈 (stack)    |&lt;br /&gt;
    +---------------+&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Uploader ===&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/milton/p/16586831.html HC32L110(二) HC32L110 在 Ubuntu 下使用 J-Link 烧录]&lt;br /&gt;
&lt;br /&gt;
==== J-Link ====&lt;br /&gt;
&lt;br /&gt;
从 https://github.com/hdscmcu/pack 获取 HDSC.HC32L130.1.0.1.pack，这是个 zip 包，改名为 L130.zip 后 unzip 解压：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ find .&lt;br /&gt;
./Device/Include/HC32L130E8PA.h&lt;br /&gt;
./Device/Include/HC32L130F8UA.h&lt;br /&gt;
./Device/Include/HC32L130J8TA.h&lt;br /&gt;
./Device/Include/system_hc32l130.h&lt;br /&gt;
./Device/Source/ARM/startup_hc32l130.s&lt;br /&gt;
./Device/Source/main.c&lt;br /&gt;
./Device/Source/system_hc32l130.c&lt;br /&gt;
./Flash/FlashHC32L130_64K.FLM&lt;br /&gt;
./HDSC.HC32L130.pdsc    # XML 描述文件&lt;br /&gt;
./SVD/HC32L130E8PA.sfr&lt;br /&gt;
./SVD/HC32L130F8UA.sfr&lt;br /&gt;
./SVD/HC32L130J8TA.sfr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
将 FlashHC32L130_64K.FLM 改名为 HC32L130_64K.FLM，放在：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;  &lt;br /&gt;
$ find /c/Program\ Files\ \(x86\)/SEGGER/JLink/Devices/HDSC/&lt;br /&gt;
/c/Program Files (x86)/SEGGER/JLink/Devices/HDSC/HC32L130_64K.FLM&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/c/Program\ Files\ \(x86\)/SEGGER/JLink/JLinkDevices.xml 增加：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Huada (HDSC) --&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L110x4&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x800&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_16K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x4000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L110B4_C4.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L110x6&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x1000&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_32K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x8000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L110B6_C6.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L130&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x2000&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_64K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x10000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L130_64K.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
则可使用 J-Flash 烧写：&lt;br /&gt;
&lt;br /&gt;
* MCU 选 HC32L130，SWD 4000KHz&lt;br /&gt;
* Target -&amp;gt; Connect&lt;br /&gt;
* Target -&amp;gt; Production Programming（快捷键 F7）&lt;br /&gt;
* Target -&amp;gt; Manual Programming -&amp;gt; Start Application（快捷键 F9）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JLink 命令行方式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat  ../../toolchain/jlink-flash.cmd&lt;br /&gt;
erase&lt;br /&gt;
loadfile build/main.hex&lt;br /&gt;
r&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$ /c/SEGGER/JLink/JLink.exe -device HC32L130 -if swd -speed 4000 -CommanderScript ../../toolchain/jlink-flash.cmd&lt;br /&gt;
SEGGER J-Link Commander V6.72c (Compiled May  8 2020 17:22:54) DLL version V6.72c, compiled May  8 2020 17:21:59&lt;br /&gt;
&lt;br /&gt;
J-Link Command File read successfully.&lt;br /&gt;
Processing script file...&lt;br /&gt;
&lt;br /&gt;
J-Link connection not established yet but required for command.&lt;br /&gt;
Connecting to J-Link via USB...O.K.&lt;br /&gt;
Firmware: J-Link V9 compiled Dec 13 2019 11:14:50&lt;br /&gt;
Hardware version: V9.30&lt;br /&gt;
S/N: 36310083&lt;br /&gt;
License(s): RDI, GDB, FlashDL, FlashBP, JFlash&lt;br /&gt;
VTref=3.300V&lt;br /&gt;
Target connection not established yet but required for command.&lt;br /&gt;
Device &amp;quot;HC32L130&amp;quot; selected.&lt;br /&gt;
&lt;br /&gt;
Connecting to target via SWD&lt;br /&gt;
Found SW-DP with ID 0x0BC11477&lt;br /&gt;
Unknown DP version. Assuming DPv0&lt;br /&gt;
Scanning AP map to find all available APs&lt;br /&gt;
AP[1]: Stopped AP scan as end of AP map has been reached&lt;br /&gt;
AP[0]: AHB-AP (IDR: 0x04770031)&lt;br /&gt;
Iterating through AP map to find AHB-AP to use&lt;br /&gt;
AP[0]: Core found&lt;br /&gt;
AP[0]: AHB-AP ROM base: 0xE00FF000&lt;br /&gt;
CPUID register: 0x410CC601. Implementer code: 0x41 (ARM)&lt;br /&gt;
Found Cortex-M0 r0p1, Little endian.&lt;br /&gt;
FPUnit: 4 code (BP) slots and 0 literal slots&lt;br /&gt;
CoreSight components:&lt;br /&gt;
ROMTbl[0] @ E00FF000&lt;br /&gt;
ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS&lt;br /&gt;
ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT&lt;br /&gt;
ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB&lt;br /&gt;
Cortex-M0 identified.&lt;br /&gt;
Erasing device...&lt;br /&gt;
J-Link: Flash download: Total time needed: 0.189s (Prepare: 0.110s, Compare: 0.000s, Erase: 0.075s, Program: 0.000s, Verify: 0.000s, Restore: 0.003s)&lt;br /&gt;
Erasing done.&lt;br /&gt;
&lt;br /&gt;
Downloading file [build/main.hex]...&lt;br /&gt;
J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (10752 bytes)&lt;br /&gt;
J-Link: Flash download: Total time needed: 1.095s (Prepare: 0.017s, Compare: 0.134s, Erase: 0.299s, Program: 0.570s, Verify: 0.060s, Restore: 0.012s)&lt;br /&gt;
O.K.&lt;br /&gt;
&lt;br /&gt;
Reset delay: 0 ms&lt;br /&gt;
Reset type NORMAL: Resets core &amp;amp; peripherals via SYSRESETREQ &amp;amp; VECTRESET bit.&lt;br /&gt;
Reset: Halt core after reset via DEMCR.VC_CORERESET.&lt;br /&gt;
Reset: Reset device via AIRCR.SYSRESETREQ.&lt;br /&gt;
&lt;br /&gt;
Script processing completed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
或者：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat up.cmd&lt;br /&gt;
device HC32L130&lt;br /&gt;
si SWD&lt;br /&gt;
speed 4000&lt;br /&gt;
connect&lt;br /&gt;
erase&lt;br /&gt;
loadfile build/main.hex&lt;br /&gt;
r&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$ /c/SEGGER/JLink/JLink.exe -CommanderScript ./up.cmd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UART ====&lt;br /&gt;
&lt;br /&gt;
* https://github.com/kicer/hc32flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STLINK ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.51hei.com/bbs/dpj-194723-1.html pyOCD]&lt;br /&gt;
&lt;br /&gt;
* https://www.cnblogs.com/milton/p/16586831.html&lt;br /&gt;
* https://github.com/IOsetting/hc32l110-template&lt;br /&gt;
* https://gitcode.com/open-source-toolkit/8cb1a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linker Script ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
MEMORY&lt;br /&gt;
{&lt;br /&gt;
    FLASH ( rx )      : ORIGIN = 0x00000000, LENGTH = 64K&lt;br /&gt;
    RAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 8K&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.vectors (Vector Table) 位于 Flash 开始处，Flash 上代码段 .text 之前：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
ENTRY(Reset_Handler)&lt;br /&gt;
&lt;br /&gt;
SECTIONS&lt;br /&gt;
{&lt;br /&gt;
  .text :&lt;br /&gt;
  {&lt;br /&gt;
    KEEP(*(.vectors))&lt;br /&gt;
    __Vectors_End = .;&lt;br /&gt;
    __Vectors_Size = __Vectors_End - __Vectors;&lt;br /&gt;
    __end__ = .;&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arch/hc32/common/startup_hc32l13x.c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
  Exception / Interrupt Vector table&lt;br /&gt;
 *----------------------------------------------------------------------------*/&lt;br /&gt;
const pFunc __Vectors[] __attribute__ ((section(&amp;quot;.vectors&amp;quot;))) = {&lt;br /&gt;
    /* Cortex-M Exception Handlers */&lt;br /&gt;
    (pFunc)&amp;amp;__StackTop,                       /*      Initial Stack Pointer     */&lt;br /&gt;
    Reset_Handler,                            /*      Reset Handler             */&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bare Metal ==&lt;br /&gt;
&lt;br /&gt;
=== Reset Handler ===&lt;br /&gt;
&lt;br /&gt;
hc32/variants/hc32l130f8ua/hc32l130f8ua.ld (Link Script) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
ENTRY(Reset_Handler)&lt;br /&gt;
&lt;br /&gt;
SECTIONS&lt;br /&gt;
{&lt;br /&gt;
  .text :&lt;br /&gt;
  {&lt;br /&gt;
    KEEP(*(.vectors))&lt;br /&gt;
    __Vectors_End = .;&lt;br /&gt;
    __Vectors_Size = __Vectors_End - __Vectors;&lt;br /&gt;
    __end__ = .;&lt;br /&gt;
    *(.text*)&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hc32/common/startup_hc32l13x.c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Reset_Handler(void) {&lt;br /&gt;
&lt;br /&gt;
    uint32_t *pSrc, *pDest;&lt;br /&gt;
    uint32_t *pTable __attribute__((unused));&lt;br /&gt;
&lt;br /&gt;
    SystemInit();&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * Single section scheme.&lt;br /&gt;
     *&lt;br /&gt;
     *  The ranges of copy from/to are specified by following symbols&lt;br /&gt;
     *    __etext: LMA of start of the section to copy from. Usually end of text&lt;br /&gt;
     *    __data_start__: VMA of start of the section to copy to&lt;br /&gt;
     *    __data_end__: VMA of end of the section to copy to&lt;br /&gt;
     *&lt;br /&gt;
     *  All addresses must be aligned to 4 bytes boundary.&lt;br /&gt;
    */&lt;br /&gt;
    pSrc  = &amp;amp;__etext;&lt;br /&gt;
    pDest = &amp;amp;__data_start__;&lt;br /&gt;
&lt;br /&gt;
    for ( ; pDest &amp;lt; &amp;amp;__data_end__ ; ) {&lt;br /&gt;
        *pDest++ = *pSrc++;&lt;br /&gt;
    }&lt;br /&gt;
    __START();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SystemInit() ===&lt;br /&gt;
&lt;br /&gt;
'''位于 hc32/common/system_hc32l13x.c:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void SystemInit(void)&lt;br /&gt;
{&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCL_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C22ul)));&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCH_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C08ul)));&lt;br /&gt;
    SystemCoreClockUpdate();&lt;br /&gt;
    _HidePinInit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Makefile ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
-D__START=main&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SystemInit() ==&lt;br /&gt;
&lt;br /&gt;
'''位于 hc32/common/system_hc32l13x.c:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void SystemInit(void)&lt;br /&gt;
{&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCL_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C22ul)));&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCH_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C08ul)));&lt;br /&gt;
    SystemCoreClockUpdate();&lt;br /&gt;
    _HidePinInit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系统时钟 (SystemClk) ===&lt;br /&gt;
&lt;br /&gt;
HC32L13x 支持以下五种时钟源作为系统时钟：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
SysctrlClkRCH  = 0u,       // 内部 RC 高速时钟，输出频率为 4~24MHz&lt;br /&gt;
SysctrlClkXTH  = 1u,       // 外部晶振高速时钟，XTH 可以不接晶振，直接从 PD00 引脚输入 4~32MHz 的时钟信号&lt;br /&gt;
SysctrlClkRCL  = 2u,       // 内部 RC 低速时钟，可选频率：38.4K 与 32.768K。当系统进入 DeepSleep，此低速时钟不会自动关闭，超低功耗外设模块可以选择 RCL 作为其时钟。&lt;br /&gt;
SysctrlClkXTL  = 3u,       // 外部晶振低速时钟，XTL 可以不接晶振，直接从 PC14 引脚输入 32.768KHz 的时钟信号。当系统进入 Deep Sleep，此低速时钟不会自动关闭。超低功耗模式下工作的&lt;br /&gt;
                           // 外设模块可以选择 XTL 作为其时钟。&lt;br /&gt;
SysctrlClkPLL  = 4u,       // 锁相环 PLL 时钟&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
还有两个辅助时钟：&lt;br /&gt;
* 内部低速 10K 时钟；仅供 WatchDog 和 CLKTRIM 模块使用。&lt;br /&gt;
* 内部 150K 时钟：仅供 LVD 和 VC 模块使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''芯片上电或复位后的默认时钟源为 4MHz 的内部 RCH 时钟'''；当系统进入 Deep Sleep，此高速时钟会自动关闭。&lt;br /&gt;
&lt;br /&gt;
更改寄存器 RCH_CR[10:0]的数值即可调整 RCH 的输出频率。寄存器数值每增加 1 则 RCH 的输出频率增加约 0.2%，总调整范围为 4~24MHz。更改 RCH 输出频率需要按照特定的更改时序，详见系统时钟切换章节。&lt;br /&gt;
&lt;br /&gt;
内部高速时钟 RCH 从启动到稳定仅需 4us。为了在深度休眠模式下能快速响应中断，建议进入深度休眠模式前将系统时钟切换为 RCH。&lt;br /&gt;
&lt;br /&gt;
RCL 默认启用 RCL_CR_TRIM_32768_VAL (32.768kHz)，可通过设置 RCL_CR 其为 RCL_CR_TRIM_38400_VAL (38.4kHz)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCLK 时钟 ===&lt;br /&gt;
&lt;br /&gt;
主供 CPU 核心。位于SYSCTRL 的 SYSCTRL0 寄存器&lt;br /&gt;
&lt;br /&gt;
'''HCLK 时钟来源选择:''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
000： SystemClk         /* reset value */&lt;br /&gt;
001： SystemClk/2 &lt;br /&gt;
010： SystemClk/4 &lt;br /&gt;
011： SystemClk/8 &lt;br /&gt;
100： SystemClk/16 &lt;br /&gt;
101： SystemClk/32 &lt;br /&gt;
110： SystemClk/64 &lt;br /&gt;
111： SystemClk/128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLK 时钟 ===&lt;br /&gt;
&lt;br /&gt;
主供外设。位于SYSCTRL 的 SYSCTRL0 寄存器&lt;br /&gt;
&lt;br /&gt;
'''PCLK 时钟来源选择:''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00： HCLK         /* reset value */&lt;br /&gt;
01： HCLK/2 &lt;br /&gt;
10： HCLK/4 &lt;br /&gt;
11： HCLK/8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SysTick 定时器 ==&lt;br /&gt;
&lt;br /&gt;
SysTick 为 24 位的定时器，向下计数。定时器的计数减到 0 后，就会重新装载一个可编程的数值，同时产生 SysTick 异常（异常编号为 15）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
MCU 的 GPIO 是通过 CMOS 的 PMOS 输出高电平，NMOS 输出低电平。&lt;br /&gt;
&lt;br /&gt;
内部上拉电阻也是一个 PMOS，引脚输出时，PMOS 或 NMOS 工作在线性区域，其等效导通电阻随着 MCU 的 VCC 变化而变化。到 MCU 工作下限电压附近时，其导通电阻会急剧变化，表象上看就是驱动能力急剧下降，上拉电阻也变大&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
芯片复位后端口为高阻输入，目的是防止芯片被异常复位时，对外部器件产生异常动作。但为了避免高阻输入而产生的漏电，用户要在芯片启动之后对端口进行相应的配置（配置成内部拉高/拉低输入或者输出）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt ==&lt;br /&gt;
&lt;br /&gt;
嵌套向量中断控制器 (NVIC) ，支持 32 个外部中断请求（IRQ）， 1 个不可屏蔽中断（NMI）&lt;br /&gt;
&lt;br /&gt;
Cortex-M0+ 的中断向量表，位于存储器空间的开始位置，注意主栈指针（MSP）的初始值位于第一个入口：&lt;br /&gt;
&lt;br /&gt;
[[文件:Cortex-m0plus-int-vec-table.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
中断号定义于 '''arch/hc32/common/hc32l13x.h:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/* Interrupt Number Definition */&lt;br /&gt;
typedef enum IRQn&lt;br /&gt;
{&lt;br /&gt;
    NMI_IRQn            = -14, /*  2 Non Maskable                            */&lt;br /&gt;
    HardFault_IRQn      = -13, /*  3 Hard Fault                              */&lt;br /&gt;
    SVC_IRQn            = -5,  /* 11 SV Call                                 */&lt;br /&gt;
    PendSV_IRQn         = -2,  /* 14 Pend SV                                 */&lt;br /&gt;
    SysTick_IRQn        = -1,  /* 15 System Tick                             */&lt;br /&gt;
&lt;br /&gt;
    PORTA_IRQn          = 0 ,&lt;br /&gt;
    PORTB_IRQn          = 1 ,&lt;br /&gt;
    PORTC_IRQn          = 2 ,&lt;br /&gt;
    PORTD_IRQn          = 3 ,&lt;br /&gt;
    DMAC_IRQn           = 4 ,&lt;br /&gt;
    TIM3_IRQn           = 5 ,&lt;br /&gt;
    UART0_IRQn          = 6 ,&lt;br /&gt;
    UART1_IRQn          = 7 ,&lt;br /&gt;
    LPUART0_IRQn        = 8 ,&lt;br /&gt;
    LPUART1_IRQn        = 9 ,&lt;br /&gt;
    SPI0_IRQn           = 10,&lt;br /&gt;
    SPI1_IRQn           = 11,&lt;br /&gt;
    I2C0_IRQn           = 12,&lt;br /&gt;
    I2C1_IRQn           = 13,&lt;br /&gt;
    TIM0_IRQn           = 14,&lt;br /&gt;
    TIM1_IRQn           = 15,&lt;br /&gt;
    TIM2_IRQn           = 16,&lt;br /&gt;
    LPTIM_IRQn          = 17,&lt;br /&gt;
    ADTIM4_IRQn         = 18,&lt;br /&gt;
    ADTIM5_IRQn         = 19,&lt;br /&gt;
    ADTIM6_IRQn         = 20,&lt;br /&gt;
    PCA_IRQn            = 21,&lt;br /&gt;
    WDT_IRQn            = 22,&lt;br /&gt;
    RTC_IRQn            = 23,&lt;br /&gt;
    ADC_IRQn            = 24,&lt;br /&gt;
    PCNT_IRQn           = 25,&lt;br /&gt;
    VC0_IRQn            = 26,&lt;br /&gt;
    VC1_IRQn            = 27,&lt;br /&gt;
    LVD_IRQn            = 28,&lt;br /&gt;
    LCD_IRQn            = 29,&lt;br /&gt;
    FLASH_RAM_IRQn      = 30,&lt;br /&gt;
    CLKTRIM_IRQn        = 31,&lt;br /&gt;
} IRQn_Type;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PortA, B, C, D 为 GPIO 中断处理入口&lt;br /&gt;
&lt;br /&gt;
四个口的对应寄存器：&lt;br /&gt;
* 中断状态寄存器 Px_STAT 地址分别为： 0x200, 0x240, 0x280, 0x2C0 (PA_STAT, PB_STAT, PC_STAT, PD_STAT)&lt;br /&gt;
* 中断清除寄存器 Px_ICLR 地址分别为： 0x210, 0x250, 0x290, 0x2D0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Low Power ==&lt;br /&gt;
&lt;br /&gt;
=== __WFI() ===&lt;br /&gt;
&lt;br /&gt;
Wait For Interrupt, 指令执行后，MCU 挂起，直到下一个中断出现。。。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/* Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs */&lt;br /&gt;
__attribute__((always_inline)) __STATIC_INLINE void __WFI(void)&lt;br /&gt;
{&lt;br /&gt;
  __ASM volatile (&amp;quot;wfi&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
中断出现、继续执行，下一条指令位于 __WFI() 之后，即返回 wfi 指令之所在&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sleep Mode ===&lt;br /&gt;
&lt;br /&gt;
CPU 核心不运行，其他外设都运行，aeco-goxp v1.2 约 200uA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Lpm_GotoSleep(boolean_t bOnExit)&lt;br /&gt;
{&lt;br /&gt;
    SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;br /&gt;
    SCB-&amp;gt;SCR |= 1u&amp;lt;&amp;lt;bOnExit;&lt;br /&gt;
    __WFI();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DeepSleep Mode ===&lt;br /&gt;
&lt;br /&gt;
进入此模式务必预留外部中断唤醒按钮应急使用！有靠谱的 Timer / RTC 定时中断亦可。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DeepSleep 模式支持少量外设运行：&lt;br /&gt;
&lt;br /&gt;
* XTL &lt;br /&gt;
* RCL &lt;br /&gt;
* RESET&lt;br /&gt;
* WDT &lt;br /&gt;
* RTC &lt;br /&gt;
* LPUART0-1 &lt;br /&gt;
* GPIO &lt;br /&gt;
* VC0-1 &lt;br /&gt;
&lt;br /&gt;
* CLKTRIM &lt;br /&gt;
* LPTIM &lt;br /&gt;
* POR/BOR &lt;br /&gt;
* PCNT &lt;br /&gt;
* LVD &lt;br /&gt;
* LCD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Lpm_GotoDeepSleep(boolean_t bOnExit)&lt;br /&gt;
{&lt;br /&gt;
    SCB-&amp;gt;SCR |= SCB_SCR_SLEEPDEEP_Msk;&lt;br /&gt;
    SCB-&amp;gt;SCR |= 1u&amp;lt;&amp;lt;bOnExit;&lt;br /&gt;
    __WFI();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
aeco-goxp v1.2 实测功耗：&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input + 下拉，约 2uA&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input + 下拉，开启 10s RTC 中断，约 5uA&lt;br /&gt;
* 板只焊最小系统 + 温湿度，deepsleep 前所有 GPIO 配置为 数字端口+ input (串口 TX 配为输出） + 下拉，开启 10s RTC 中断，约 100uA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UART ==&lt;br /&gt;
&lt;br /&gt;
《HC32L130 / HC32L136 / HC32F030 系列硬件开发指南》：&lt;br /&gt;
&lt;br /&gt;
* PA09 --- UART0_TX&lt;br /&gt;
* PA10 --- UART0_RX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SPI ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LP Timer ==&lt;br /&gt;
&lt;br /&gt;
Low Power Timer 低功耗计时器&lt;br /&gt;
&lt;br /&gt;
LPTimer 的定时器支持两种工作模式，通过设置定时器控制寄存器（CR）中 MD 选择工作模式：&lt;br /&gt;
* 模式 1 为 16 bit 自由计数模式&lt;br /&gt;
* 模式 2 是 16 bit 重载模式&lt;br /&gt;
&lt;br /&gt;
LPTimer 启动时会自动装载重载寄存器 ARR 的值到计数器中。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''计数功能'''：用于测定某个事件发生的次数。计数到最大值会溢出并且产生中断。计数器在每个相应的输入时钟的下降沿累加一次。输入信号被内部的计数时钟采样，因此外部输入时钟频率不能超过系统的计数时钟。 &lt;br /&gt;
* '''定时功能'''：用于产生间隔定时。在定时功能中，定时器一个时钟累加一次，计数到最大值会溢出并且产生中断。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ADC ==&lt;br /&gt;
&lt;br /&gt;
HC32L130F8UA 含有 8 个 12bit ADC&lt;br /&gt;
&lt;br /&gt;
https://bbs.21ic.com/icview-2817282-1-1.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* https://www.hdsc.com.cn/list/71/35.htm&lt;br /&gt;
* https://hdsc.com.cn/cn/index/listView/catid/94/cdk/56a757q!57yW56iL&lt;br /&gt;
* HC32L130_HC32L136系列数据手册Rev1.9.pdf&lt;br /&gt;
* HC32L130_硬件开发指南.pdf&lt;br /&gt;
* HC32L130_HC32L136系列用户手册Rev2.31.pdf&lt;br /&gt;
* [https://vivonomicon.com/2018/04/02/bare-metal-stm32-programming-part-1-hello-arm/ &amp;quot;Bare Metal&amp;quot; STM32 Programming]&lt;br /&gt;
* [https://www.geeksforgeeks.org/memory-layout-of-c-program/ Memory Layout of C Programs]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/Camera</id>
		<title>Camera</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/Camera"/>
				<updated>2026-04-10T02:24:12Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Quick Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
RTSP Server&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
基于 RTSP 协议的 IoT 平台监控&lt;br /&gt;
&lt;br /&gt;
* 选择支持RTSP网络摄像头（标准H.264 RTP封装的设备）。&lt;br /&gt;
* 按照摄像头的使用说明书部署。假设访问IP地址是：http://192.168.0.64，登录后设置输出端口为：81，则完整的取流地址为：   　&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
主码流： rtsp://admin:12345@192.0.0.64:81/h264/ch1/main/av_streamrtsp://admin:12345@192.0.0.64:81/MPEG-4/ch1/main/av_stream&lt;br /&gt;
子码流： rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_streamrtsp://admin:12345@192.0.0.64/h264/ch1/sub/av_stream&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 使用 VLC（支持标准的RTSP流媒体）播放器即可实时播放&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sensors ==&lt;br /&gt;
&lt;br /&gt;
=== GC0308 ===&lt;br /&gt;
&lt;br /&gt;
* 1/6.5'', 3.4umx3.4um&lt;br /&gt;
* 648x488, 30MP, 30fps @VGA&lt;br /&gt;
* RAW10bit / 8bit, 10 bit ADC&lt;br /&gt;
* DVP&lt;br /&gt;
* Single power supply requirement 2.7 ~ 3.3V typical 2.8V&lt;br /&gt;
* 70mW@30fps VGA, 10uA@standby&lt;br /&gt;
* -30℃ to +80℃&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GC2053 ===&lt;br /&gt;
&lt;br /&gt;
* 1/2.9'', 2.8umx2.8um&lt;br /&gt;
* 1920x1080, 200MP, 30fps @1920x1080&lt;br /&gt;
* RAW10bit / 8bit, 10 bit ADC&lt;br /&gt;
* Electronic Rolling Shutter&lt;br /&gt;
* MIPI (2lane) &amp;amp; DVP interface&lt;br /&gt;
* AVCC 2.8V, DVCC 1.2V, IOVCC 1.8V&lt;br /&gt;
* Dynamic range: 81dB&lt;br /&gt;
* Input clock freq: 6~27MHz&lt;br /&gt;
* 98mW&lt;br /&gt;
* -20℃ to +80℃&lt;br /&gt;
* Stable Image temperature: 0℃~ 60℃&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GC2093 ===&lt;br /&gt;
&lt;br /&gt;
* 1/2.9'', 2.8umx2.8um&lt;br /&gt;
* 1920x1080, 200MP, '''60fps''' @1920x1080&lt;br /&gt;
* RAW10bit / 8bit, 10 bit ADC&lt;br /&gt;
* Electronic Rolling Shutter&lt;br /&gt;
* MIPI (2lane) &amp;amp; DVP interface&lt;br /&gt;
* AVCC 2.8V, DVCC 1.2V, IOVCC 1.8V&lt;br /&gt;
* Dynamic range: 81dB (linear), 105dB (HDR)&lt;br /&gt;
* Input clock freq: 6~27MHz&lt;br /&gt;
* ? mW&lt;br /&gt;
* -30℃ ~ 85℃&lt;br /&gt;
* Stable Image temperature: 0℃~ 60℃&lt;br /&gt;
&lt;br /&gt;
与 GC2053 PIN to PIN 兼容，应可替换&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GC4653 ===&lt;br /&gt;
&lt;br /&gt;
* 1/3'', 2umx2um&lt;br /&gt;
* 2560x1440, 400MP, 30fps @2560x1440&lt;br /&gt;
* RAW12/10, 12 bit ADC&lt;br /&gt;
* MIPI 2lane &amp;amp; DVP interface&lt;br /&gt;
* AVCC 2.8V, DVCC 1.2V, IOVCC 1.8V&lt;br /&gt;
* Dynamic range: 81dB&lt;br /&gt;
* Input clock freq: 6~36MHz&lt;br /&gt;
* 120mW&lt;br /&gt;
* -20℃ to +80℃&lt;br /&gt;
* 40pin CSP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OS04A10 ===&lt;br /&gt;
&lt;br /&gt;
* 1/1.79'' （对角线约9.02mm）&lt;br /&gt;
* 2688x1520, 400MP, 30fps @2688x1520&lt;br /&gt;
* MIPI / LVDS&lt;br /&gt;
* AVCC 2.8V, DVCC 1.2V, IOVCC 1.8V&lt;br /&gt;
* 300mW&lt;br /&gt;
* -30℃ to +85℃&lt;br /&gt;
&lt;br /&gt;
https://www.pdapply.com/archives/datasheet-os-os04a10&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IMX ===&lt;br /&gt;
&lt;br /&gt;
* [http://support.hkvstar.com/file/IMX323LQ-C.pdf IMX323 Datasheet]&lt;br /&gt;
* [https://dashcamtalk.com/cams/lk-7950-wd/Sony_IMX322.pdf IMX322 Datasheet]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/fritz-smh/yi-hack&lt;br /&gt;
* https://github.com/niclet/yi-hack-v2&lt;br /&gt;
* https://github.com/shadow-1/yi-hack-v3&lt;br /&gt;
* https://github.com/TheCrypt0/yi-hack-v4&lt;br /&gt;
* https://github.com/deltaflyer4747/Xiaomi_Yi&lt;br /&gt;
* https://github.com/YITechnology/YIOpenAPI&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/Bim</id>
		<title>Bim</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/Bim"/>
				<updated>2026-04-09T03:42:41Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 采集器规范 ==&lt;br /&gt;
&lt;br /&gt;
=== 采集器硬件要求  ===&lt;br /&gt;
&lt;br /&gt;
单次采集，数据量很大，硬件最好满足如下基本要求：&lt;br /&gt;
&lt;br /&gt;
* 至少 32MB 内存&lt;br /&gt;
* 能跑嵌入式 Linux 系统&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 下行一路 RS485 最少支持 40 块表，支持多路 RS485&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 采集器固件功能要求 ===&lt;br /&gt;
&lt;br /&gt;
* 上行到服务器，用以太网，IP 地址和端口可配置，支持 DHCP （可选）&lt;br /&gt;
* 通过 http post 请求往内网服务器推送数据&lt;br /&gt;
* 数据间隔可调，最小粒度2分钟，即：每 2 分钟抄一次所有表，随后 http 发往内网服务器&lt;br /&gt;
* 集中器如果数据上行 http push失败，至少要能存储一天的历史数据，待内网服务器恢复后，自动将历史数据推送到服务器 （可选）&lt;br /&gt;
* 支持配置 building_id 和 gateway_id（可选）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 集中器最好支持配置电表的 CT 变比，自动乘上 CT 变比 （可选）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 采集器上传数据格式 ===&lt;br /&gt;
&lt;br /&gt;
* building_id 为建筑编号&lt;br /&gt;
* gateway_id 为采集器编号&lt;br /&gt;
&lt;br /&gt;
* meter_id 为电表地址&lt;br /&gt;
* way_id 为电表的路号，支持 1 路的电表 way_id 为 1；支持 2 路三相电监控的路号为 1 ~ 2；支持 6 路三相电监控的路号为 1 ~ 6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 电表数据可以详细到三相电的每一相，就是下面 xml 格式内的 phase A， B，C。每项的监测数据有电压 (U)，电流 (I)，功率 (P)，功率因数 (PF)，视在功率 (S)和无功功率 (Q)&lt;br /&gt;
* 三相总的（phase All）数据：功率因数 (PF)，有功功率 (P)，无功功率 (Q)，视在功率 (S)，正向有功总电能 (PEP)，反向有功总电能 (NEP)，正向无功总电能 (PEQ)，反向无功总电能 (NEQ)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 每一个时间间隔抄表，上行数据的 timestamp 必须统一 （xml:  &amp;lt;time&amp;gt;20170908123000&amp;lt;/time&amp;gt;，即：2017-09-08 12:30:00）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下是电表地址 (meter_id) 为 70（一路）和 72 （两路）两块表的数据同时上传例子：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;root&amp;gt;&lt;br /&gt;
  &amp;lt;common&amp;gt;&lt;br /&gt;
    &amp;lt;building_id&amp;gt;110101B001&amp;lt;/building_id&amp;gt;&lt;br /&gt;
    &amp;lt;gateway_id&amp;gt;2&amp;lt;/gateway_id&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;report&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;data operation=&amp;quot;report&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;sequence&amp;gt;0&amp;lt;/sequence&amp;gt;&lt;br /&gt;
      &amp;lt;parser&amp;gt;yes&amp;lt;/parser&amp;gt;&lt;br /&gt;
      &amp;lt;time&amp;gt;20170810093040&amp;lt;/time&amp;gt;&lt;br /&gt;
      &amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&lt;br /&gt;
      &amp;lt;current&amp;gt;1&amp;lt;/current&amp;gt;&lt;br /&gt;
      &amp;lt;meter id=&amp;quot;70&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;function id=&amp;quot;1&amp;quot; coding=&amp;quot;01&amp;quot; error=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;way id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&lt;br /&gt;
              &amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&lt;br /&gt;
              &amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&lt;br /&gt;
              &amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&lt;br /&gt;
              &amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
          &amp;lt;/way&amp;gt;&lt;br /&gt;
        &amp;lt;/function&amp;gt;&lt;br /&gt;
      &amp;lt;/meter&amp;gt;&lt;br /&gt;
      &amp;lt;meter id=&amp;quot;72&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;function id=&amp;quot;1&amp;quot; coding=&amp;quot;01&amp;quot; error=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;way id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&lt;br /&gt;
              &amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&lt;br /&gt;
              &amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&lt;br /&gt;
              &amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&lt;br /&gt;
              &amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
          &amp;lt;/way&amp;gt;&lt;br /&gt;
          &amp;lt;way id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&lt;br /&gt;
              &amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
            &amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&lt;br /&gt;
              &amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&lt;br /&gt;
              &amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&lt;br /&gt;
              &amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&lt;br /&gt;
              &amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&lt;br /&gt;
              &amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&lt;br /&gt;
              &amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&lt;br /&gt;
              &amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&lt;br /&gt;
            &amp;lt;/phase&amp;gt;&lt;br /&gt;
          &amp;lt;/way&amp;gt;&lt;br /&gt;
        &amp;lt;/function&amp;gt;&lt;br /&gt;
      &amp;lt;/meter&amp;gt;&lt;br /&gt;
    &amp;lt;/data&amp;gt;&lt;br /&gt;
  &amp;lt;/common&amp;gt;&lt;br /&gt;
&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTTP POST 格式 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
POST /dev/elec HTTP/1.1&lt;br /&gt;
Host: 192.168.1.20&lt;br /&gt;
User-Agent: curl/7.52.1&lt;br /&gt;
Accept: */*&lt;br /&gt;
Content-Length: 3401&lt;br /&gt;
Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
Expect: 100-continue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&amp;lt;root&amp;gt;&amp;lt;common&amp;gt;&amp;lt;building_id&amp;gt;110101B001&amp;lt;/building_id&amp;gt;&amp;lt;gateway_id&amp;gt;2&amp;lt;/gateway_id&amp;gt;&amp;lt;type&amp;gt;report&amp;lt;/type&amp;gt;&amp;lt;data operation=&amp;quot;report&amp;quot;&amp;gt;&amp;lt;sequence&amp;gt;0&amp;lt;/sequence&amp;gt;&amp;lt;parser&amp;gt;yes&amp;lt;/parser&amp;gt;&amp;lt;time&amp;gt;20170810093040&amp;lt;/time&amp;gt;&amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&amp;lt;current&amp;gt;1&amp;lt;/current&amp;gt;&amp;lt;meter id=&amp;quot;70&amp;quot;&amp;gt;&amp;lt;function id=&amp;quot;1&amp;quot; coding=&amp;quot;01&amp;quot; error=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;way id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;/function&amp;gt;&amp;lt;/meter&amp;gt;&amp;lt;meter id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;function id=&amp;quot;1&amp;quot; coding=&amp;quot;01&amp;quot; error=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;way id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.30&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.30&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.30&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.40&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.40&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.40&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.50&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.50&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.50&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.60&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.60&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.60&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;/function&amp;gt;&amp;lt;/meter&amp;gt;&amp;lt;/data&amp;gt;&amp;lt;/common&amp;gt;&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat d.xml&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&amp;lt;root&amp;gt;&amp;lt;common&amp;gt;&amp;lt;building_id&amp;gt;110101B001&amp;lt;/building_id&amp;gt;&amp;lt;gateway_id&amp;gt;2&amp;lt;/gateway_id&amp;gt;&amp;lt;type&amp;gt;report&amp;lt;/type&amp;gt;&amp;lt;data operation=&amp;quot;report&amp;quot;&amp;gt;&amp;lt;sequence&amp;gt;0&amp;lt;/sequence&amp;gt;&amp;lt;parser&amp;gt;yes&amp;lt;/parser&amp;gt;&amp;lt;time&amp;gt;20170810093040&amp;lt;/time&amp;gt;&amp;lt;total&amp;gt;1&amp;lt;/total&amp;gt;&amp;lt;current&amp;gt;1&amp;lt;/current&amp;gt;&amp;lt;meter id=&amp;quot;70&amp;quot;&amp;gt;&amp;lt;function id=&amp;quot;1&amp;quot; coding=&amp;quot;01&amp;quot; error=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;way id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;7.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.70&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.77&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;/function&amp;gt;&amp;lt;/meter&amp;gt;&amp;lt;meter id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;function id=&amp;quot;1&amp;quot; coding=&amp;quot;01&amp;quot; error=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;way id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.10&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.20&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.30&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.30&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.30&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;4&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.40&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.40&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.40&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.50&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.50&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.50&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;way id=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;phase id=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.60&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.60&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;U&amp;gt;226.12&amp;lt;/U&amp;gt;&amp;lt;I&amp;gt;0.00&amp;lt;/I&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.60&amp;lt;/PF&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;phase id=&amp;quot;All&amp;quot;&amp;gt;&amp;lt;S&amp;gt;0.00&amp;lt;/S&amp;gt;&amp;lt;P&amp;gt;0.00&amp;lt;/P&amp;gt;&amp;lt;Q&amp;gt;0.00&amp;lt;/Q&amp;gt;&amp;lt;PF&amp;gt;0.00&amp;lt;/PF&amp;gt;&amp;lt;PEP&amp;gt;5.00&amp;lt;/PEP&amp;gt;&amp;lt;NEP&amp;gt;6.00&amp;lt;/NEP&amp;gt;&amp;lt;PEQ&amp;gt;5.00&amp;lt;/PEQ&amp;gt;&amp;lt;NEQ&amp;gt;6.00&amp;lt;/NEQ&amp;gt;&amp;lt;/phase&amp;gt;&amp;lt;/way&amp;gt;&amp;lt;/function&amp;gt;&amp;lt;/meter&amp;gt;&amp;lt;/data&amp;gt;&amp;lt;/common&amp;gt;&amp;lt;/root&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ curl -X POST -d @d.xml http://192.168.1.20:8000/dev/elec&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 现场调试操作 ==&lt;br /&gt;
&lt;br /&gt;
* http://192.168.1.2:3000/&lt;br /&gt;
* http://192.168.1.2:18083/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* http://192.168.1.2:8000/device/yard&lt;br /&gt;
* http://192.168.1.2:8000/device/yard2&lt;br /&gt;
* http://192.168.1.2:8000/device/temp&lt;br /&gt;
* http://192.168.1.2:8000/device/temp2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* pull elect data: http://192.168.1.2:8000/dev/data?meter_id=1B&amp;amp;way_id=3&lt;br /&gt;
&lt;br /&gt;
* push data: http://192.168.1.2:8000/dev/temp?building_id=110101B001&amp;amp;devid=MKD393830497658&amp;amp;temp=19.2&lt;br /&gt;
* pull data: http://192.168.1.2:8000/tempdata?devid=MKD118581004672&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:5d-collector.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下所有操作都在 USB 连接集中器后获取的串口终端里操作，参见《集中器本地调试指南》&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#&lt;br /&gt;
[root@mcuzone root]#[gprs.c][ModelIdentify][671] &lt;br /&gt;
ps ax&lt;br /&gt;
PID   USER     TIME   COMMAND&lt;br /&gt;
    1 root       0:00 init&lt;br /&gt;
    2 root       0:00 [kthreadd]&lt;br /&gt;
    3 root       0:00 [ksoftirqd/0]&lt;br /&gt;
    4 root       0:00 [kworker/0:0]&lt;br /&gt;
    5 root       0:00 [kworker/u:0]&lt;br /&gt;
    6 root       0:00 [rcu_kthread]&lt;br /&gt;
    7 root       0:00 [khelper]&lt;br /&gt;
    8 root       0:00 [kworker/u:1]&lt;br /&gt;
  136 root       0:00 [sync_supers]&lt;br /&gt;
  138 root       0:00 [bdi-default]&lt;br /&gt;
  140 root       0:00 [kblockd]&lt;br /&gt;
  152 root       0:00 [khubd]&lt;br /&gt;
  186 root       0:00 [cfg80211]&lt;br /&gt;
  187 root       0:00 [kworker/0:1]&lt;br /&gt;
  270 root       0:00 [rpciod]&lt;br /&gt;
  277 root       0:00 [kswapd0]&lt;br /&gt;
  278 root       0:00 [fsnotify_mark]&lt;br /&gt;
  279 root       0:00 [nfsiod]&lt;br /&gt;
  280 root       0:00 [crypto]&lt;br /&gt;
  347 root       0:00 [mtdblock0]&lt;br /&gt;
  352 root       0:00 [mtdblock1]&lt;br /&gt;
  360 root       0:00 [ubi_bgt0d]&lt;br /&gt;
  402 root       0:00 [ubifs_bgt0_0]&lt;br /&gt;
  416 root       0:00 telnetd&lt;br /&gt;
  421 root       0:00 {runapp.sh} /bin/sh ./runapp.sh&lt;br /&gt;
  422 root       0:00 -sh&lt;br /&gt;
  423 root       0:00 /sbin/getty 115200 tty1 vt100&lt;br /&gt;
  429 root       0:00 ./gather_V0&lt;br /&gt;
  446 root       0:00 [flush-ubifs_0_0]&lt;br /&gt;
  452 root       0:00 sleep 10&lt;br /&gt;
  455 root       0:00 ps ax&lt;br /&gt;
[root@mcuzone root]#kill -9 421&lt;br /&gt;
[root@mcuzone root]#kill -9 429&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 更改上行网络 ===&lt;br /&gt;
&lt;br /&gt;
net_type 网络类型:&lt;br /&gt;
&lt;br /&gt;
* 0 - GPRS&lt;br /&gt;
* 1 - RS485&lt;br /&gt;
* 2 - Ethernet (NOT SUPPORT)&lt;br /&gt;
* 3 - Zigbee (NOT SUPPORT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef enum em_net_mod {&lt;br /&gt;
    em_net_gprs = 0,&lt;br /&gt;
    em_net_rs485,&lt;br /&gt;
    em_net_eth,&lt;br /&gt;
    em_net_zigbee&lt;br /&gt;
} net_mod;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
现场集中器上行使用 RS485 转 Ethernet 组网，因此需将 net_type 改为 1 （RS485):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#cd /app&lt;br /&gt;
[root@mcuzone /app]#sqlite3 ./gatherdb.db &lt;br /&gt;
SQLite version 3.10.0 2016-01-06 11:01:07&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for usage hints.&lt;br /&gt;
sqlite&amp;gt; select * from t_base_define;&lt;br /&gt;
sqlite&amp;gt; .head on                                                    &lt;br /&gt;
sqlite&amp;gt; .mode column&lt;br /&gt;
sqlite&amp;gt; select * from t_base_define;&lt;br /&gt;
f_id        f_config_name   f_config_value&lt;br /&gt;
----------  --------------  --------------&lt;br /&gt;
1           primary_server  122.5.18.174  &lt;br /&gt;
2           primary_dns     219.146.0.130 &lt;br /&gt;
3           primary_port    9011          &lt;br /&gt;
4           second_server   219.146.0.130 &lt;br /&gt;
5           second_dns      219.146.0.130 &lt;br /&gt;
6           second_port     9027          &lt;br /&gt;
7           gateway_id      37060001      &lt;br /&gt;
8           net_type        0             &lt;br /&gt;
9           md5_key         863CA654      &lt;br /&gt;
10          aes_key         d41d8cd98f00b2&lt;br /&gt;
11          collect_mode    0             &lt;br /&gt;
12          collect_cycle   15             &lt;br /&gt;
13          report_mode     0             &lt;br /&gt;
14          beat_cycle      2             &lt;br /&gt;
15          svr_num         0001          &lt;br /&gt;
16          appmd5          28a011de19210e&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; update t_base_define set f_config_value='1' where f_config_name='net_type';&lt;br /&gt;
sqlite&amp;gt; &lt;br /&gt;
sqlite&amp;gt; select * from t_base_define;&lt;br /&gt;
f_id        f_config_name   f_config_value&lt;br /&gt;
----------  --------------  --------------&lt;br /&gt;
1           primary_server  122.5.18.174  &lt;br /&gt;
2           primary_dns     219.146.0.130 &lt;br /&gt;
3           primary_port    9011          &lt;br /&gt;
4           second_server   219.146.0.130 &lt;br /&gt;
5           second_dns      219.146.0.130 &lt;br /&gt;
6           second_port     9027          &lt;br /&gt;
7           gateway_id      37060001      &lt;br /&gt;
8           net_type        1             &lt;br /&gt;
9           md5_key         863CA654      &lt;br /&gt;
10          aes_key         d41d8cd98f00b2&lt;br /&gt;
11          collect_mode    0             &lt;br /&gt;
12          collect_cycle   15             &lt;br /&gt;
13          report_mode     0             &lt;br /&gt;
14          beat_cycle      2             &lt;br /&gt;
15          svr_num         0001          &lt;br /&gt;
16          appmd5          28a011de19210e&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 校准 RTC ===&lt;br /&gt;
&lt;br /&gt;
确认集中器内 RTC 时间：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#hwclock -r&lt;br /&gt;
Thu Jan  1 12:38:56 1970  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时间会影响到上行 XML 数据内时间戳，时间不正确，需要根据现在时间校准集线器的 RTC:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#date -s 2017.01.06-12:38:48&lt;br /&gt;
Thu Jan  6 12:38:48 CST 2017&lt;br /&gt;
[root@mcuzone root]#hwclock -w # write RTC to store the time&lt;br /&gt;
[root@mcuzone root]#hwclock -r&lt;br /&gt;
Thu Jan  6 12:38:56 2017  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 集中器联网 ===&lt;br /&gt;
&lt;br /&gt;
集中器联网，旨在更新集中器内部抄表核心程序。更新完毕网络即可拔除&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
打开集中器外壳，插上网线使其可访问外网&lt;br /&gt;
&lt;br /&gt;
集中器 IP:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#ifconfig eth0 192.168.1.251&lt;br /&gt;
[root@mcuzone root]#ifconfig eth0 up&lt;br /&gt;
eth0      Link encap:Ethernet  HWaddr 4E:FC:21:ED:70:7A  &lt;br /&gt;
          inet addr:192.168.1.251  Bcast:192.168.1.255  Mask:255.255.255.0&lt;br /&gt;
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
          collisions:0 txqueuelen:1000 &lt;br /&gt;
          RX bytes:1344 (1.3 KiB)  TX bytes:0 (0.0 B)&lt;br /&gt;
          Interrupt:24 Base address:0xc000 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#route -n&lt;br /&gt;
Kernel IP routing table&lt;br /&gt;
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface&lt;br /&gt;
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0&lt;br /&gt;
[root@mcuzone root]#ping 42.121.85.30&lt;br /&gt;
PING 42.121.85.30 (42.121.85.30): 56 data bytes&lt;br /&gt;
ping: sendto: Network is unreachable&lt;br /&gt;
[root@mcuzone root]#route add default gw 192.168.1.1&lt;br /&gt;
[root@mcuzone root]#route -n&lt;br /&gt;
Kernel IP routing table&lt;br /&gt;
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface&lt;br /&gt;
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0&lt;br /&gt;
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ping testing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#ping 42.121.85.30&lt;br /&gt;
PING 42.121.85.30 (42.121.85.30): 56 data bytes&lt;br /&gt;
64 bytes from 42.121.85.30: seq=0 ttl=51 time=27.494 ms&lt;br /&gt;
64 bytes from 42.121.85.30: seq=1 ttl=51 time=28.665 ms&lt;br /&gt;
64 bytes from 42.121.85.30: seq=2 ttl=51 time=28.041 ms&lt;br /&gt;
Ctrl+C&lt;br /&gt;
--- 42.121.85.30 ping statistics ---&lt;br /&gt;
3 packets transmitted, 3 packets received, 0% packet loss&lt;br /&gt;
round-trip min/avg/max = 27.494/28.066/28.665 ms&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 更新集中器核心程序 ===&lt;br /&gt;
&lt;br /&gt;
确认集中器可访问外网后，先备份原有抄表核心程序：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#cd /app&lt;br /&gt;
[root@mcuzone /app]#ls&lt;br /&gt;
buff1.xml      buff3.xml      gatherdb.db    rcS            x&lt;br /&gt;
buff2.xml      gather_V0  log.txt        runapp.sh&lt;br /&gt;
&lt;br /&gt;
[root@mcuzone /app]#mv gather_V0 gather_V0.old&lt;br /&gt;
[root@mcuzone /app]#ls&lt;br /&gt;
buff1.xml      buff3.xml      gatherdb.db    rcS            x&lt;br /&gt;
buff2.xml      gather_V0.old  log.txt        runapp.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
获取修正后的抄表核心程序：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone /app]#wget http://42.121.85.30/gather_V0&lt;br /&gt;
Connecting to 42.121.85.30 (42.121.85.30:80)&lt;br /&gt;
gather_V0            100% |*******************************|   316k  0:00:00 ETA&lt;br /&gt;
[root@mcuzone /app]#ls&lt;br /&gt;
buff1.xml      buff3.xml      gather_V0.old  log.txt        runapp.sh&lt;br /&gt;
buff2.xml      gather_V0      gatherdb.db    rcS&lt;br /&gt;
&lt;br /&gt;
[root@mcuzone /app]#ls -l gather*&lt;br /&gt;
-rw-r--r--    1 root     root        324430 Jan  6 12:25 gather_V0&lt;br /&gt;
-rwxr-xr-x    1 root     root        294111 Jan  5 23:43 gather_V0.old&lt;br /&gt;
-rw-r--r--    1 1002     1002         51200 Jan  6 12:13 gatherdb.db&lt;br /&gt;
&lt;br /&gt;
[root@mcuzone /app]#chmod +x gather_V0&lt;br /&gt;
&lt;br /&gt;
[root@mcuzone /app]#ls -l gather*&lt;br /&gt;
-rwxr-xr-x    1 root     root        324430 Jan  6 12:25 gather_V0&lt;br /&gt;
-rwxr-xr-x    1 root     root        294111 Jan  5 23:43 gather_V0.old&lt;br /&gt;
-rw-r--r--    1 1002     1002         51200 Jan  6 12:13 gatherdb.db&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
试运行：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone /app]#./gather_V0&lt;br /&gt;
Creat QMSG_FILE OK.&lt;br /&gt;
g_uiQmsgFd = 0.&lt;br /&gt;
XMLBuf_Init OK.&lt;br /&gt;
QueuesInit OK!&lt;br /&gt;
open_IOControl OK!&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
[db.c][each_meter_info][1027] meter_type length : 2&lt;br /&gt;
[db.c][each_meter_info][1030] meter_type: 40&lt;br /&gt;
[db.c][each_meter_info][1052]135000000&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
重启集中器：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone /app]#reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or press the SW1 button to reset the Collector&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ZLAN 5102 设置 ===&lt;br /&gt;
&lt;br /&gt;
ZLAN 配置工作在 TCP Client 模式，这样集中器通过 RS485 上行的 XML 数据自动被 ZLAN 转发到：&lt;br /&gt;
&lt;br /&gt;
* Dest IP 为 122.5.18.172 的服务器（调试目的此 IP 为调试人员 PC）&lt;br /&gt;
* Dest Port 为 9011&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此运行于 122.5.18.172 上的上位机程序服务端口为 9011，上位服务器通过此端口获取集中器主动上发的 XML 数据，解析后需向集中器发包响应&lt;br /&gt;
&lt;br /&gt;
没有响应数据包，集中器会认为发送失败，会重复发送上行数据&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:Zlan5130-config.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 验证 ===&lt;br /&gt;
&lt;br /&gt;
到此，在调试人员 PC 122.5.18.172 上，开一个 TCP Server 端口在 9011，就能收到，集中器定时上传的 XML 数据:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@jackslab:/work/5d/src/src-x$ sudo nc -l -p 9011&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;root&amp;gt;&amp;lt;common&amp;gt;&amp;lt;sadd&amp;gt;37060001&amp;lt;/sadd&amp;gt;&amp;lt;oadd&amp;gt;&amp;lt;/oadd&amp;gt;&amp;lt;func_type&amp;gt;6&amp;lt;/func_type&amp;gt;&amp;lt;oper_type&amp;gt;3&amp;lt;/oper_type&amp;gt;&amp;lt;/common&amp;gt;&amp;lt;trans&amp;gt;&amp;lt;total_meter_num&amp;gt;1&amp;lt;/total_meter_num&amp;gt;&amp;lt;frame_idx&amp;gt;1&amp;lt;/frame_idx&amp;gt;&amp;lt;meter_num&amp;gt;1&amp;lt;/meter_num&amp;gt;&amp;lt;time_node&amp;gt;2017-01-05 22:38:00&amp;lt;/time_node&amp;gt;&amp;lt;/trans&amp;gt;&amp;lt;row id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;f_id&amp;gt;2375&amp;lt;/f_id&amp;gt;&amp;lt;f_meter_type&amp;gt;40&amp;lt;/f_meter_type&amp;gt;&amp;lt;f_device_id&amp;gt;3&amp;lt;/f_device_id&amp;gt;&amp;lt;f_meter_address&amp;gt;00000000000087&amp;lt;/f_meter_address&amp;gt;&amp;lt;f_timestamp&amp;gt;2017-01-05 22:38:43&amp;lt;/f_timestamp&amp;gt;&amp;lt;f_time&amp;gt;2017-01-05 22:38:00&amp;lt;/f_time&amp;gt;&amp;lt;f_pact_tot_elec&amp;gt;null&amp;lt;/f_pact_tot_elec&amp;gt;&amp;lt;f_nact_tot_elec&amp;gt;null&amp;lt;/f_nact_tot_elec&amp;gt;&amp;lt;f_preact_tot_elec&amp;gt;null&amp;lt;/f_preact_tot_elec&amp;gt;&amp;lt;f_nreact_tot_elec&amp;gt;null&amp;lt;/f_nreact_tot_elec&amp;gt;&amp;lt;f_act_tot_elec&amp;gt;null&amp;lt;/f_act_tot_elec&amp;gt;&amp;lt;f_react_tot_elec&amp;gt;null&amp;lt;/f_react_tot_elec&amp;gt;&amp;lt;/row&amp;gt;&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;root&amp;gt;&amp;lt;common&amp;gt;&amp;lt;sadd&amp;gt;37060001&amp;lt;/sadd&amp;gt;&amp;lt;oadd&amp;gt;&amp;lt;/oadd&amp;gt;&amp;lt;func_type&amp;gt;6&amp;lt;/func_type&amp;gt;&amp;lt;oper_type&amp;gt;3&amp;lt;/oper_type&amp;gt;&amp;lt;/common&amp;gt;&amp;lt;trans&amp;gt;&amp;lt;total_meter_num&amp;gt;1&amp;lt;/total_meter_num&amp;gt;&amp;lt;frame_idx&amp;gt;1&amp;lt;/frame_idx&amp;gt;&amp;lt;meter_num&amp;gt;1&amp;lt;/meter_num&amp;gt;&amp;lt;time_node&amp;gt;2017-01-05 22:38:00&amp;lt;/time_node&amp;gt;&amp;lt;/trans&amp;gt;&amp;lt;row id=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;f_id&amp;gt;2375&amp;lt;/f_id&amp;gt;&amp;lt;f_meter_type&amp;gt;40&amp;lt;/f_meter_type&amp;gt;&amp;lt;f_device_id&amp;gt;3&amp;lt;/f_device_id&amp;gt;&amp;lt;f_meter_address&amp;gt;00000000000087&amp;lt;/f_meter_address&amp;gt;&amp;lt;f_timestamp&amp;gt;2017-01-05 22:38:43&amp;lt;/f_timestamp&amp;gt;&amp;lt;f_time&amp;gt;2017-01-05 22:38:00&amp;lt;/f_time&amp;gt;&amp;lt;f_pact_tot_elec&amp;gt;null&amp;lt;/f_pact_tot_elec&amp;gt;&amp;lt;f_nact_tot_elec&amp;gt;null&amp;lt;/f_nact_tot_elec&amp;gt;&amp;lt;f_preact_tot_elec&amp;gt;null&amp;lt;/f_preact_tot_elec&amp;gt;&amp;lt;f_nreact_tot_elec&amp;gt;null&amp;lt;/f_nreact_tot_elec&amp;gt;&amp;lt;f_act_tot_elec&amp;gt;null&amp;lt;/f_act_tot_elec&amp;gt;&amp;lt;f_react_tot_elec&amp;gt;null&amp;lt;/f_react_tot_elec&amp;gt;&amp;lt;/row&amp;gt;&amp;lt;/root&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
集中器默认抄表时间间隔为 15 分钟，调试目的，可将时间间隔调整为 2 分钟：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone root]#cd /app&lt;br /&gt;
[root@mcuzone /app]#sqlite3 ./gatherdb.db &lt;br /&gt;
SQLite version 3.10.0 2016-01-06 11:01:07&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for usage hints.&lt;br /&gt;
sqlite&amp;gt; select * from t_base_define where f_config_name='collect_cycle';&lt;br /&gt;
f_id        f_config_name   f_config_value&lt;br /&gt;
----------  --------------  --------------&lt;br /&gt;
12          collect_cycle   15             &lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; update t_base_define set f_config_value='2' where f_config_name='collect_cycle';&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
重启集中器，即可生效：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone /app]#reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update APP ==&lt;br /&gt;
&lt;br /&gt;
Your PC:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install nfs-kernel-server&lt;br /&gt;
 &lt;br /&gt;
Config the nfs directory:&lt;br /&gt;
 &lt;br /&gt;
$ sudo mkdir -p /tftpboot/rootfs&lt;br /&gt;
$ cat /etc/exports&lt;br /&gt;
/work/armv9    *(async,rw,insecure,insecure_locks,no_root_squash)&lt;br /&gt;
 &lt;br /&gt;
$ sudo /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In collector:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone /app]#mount -o port=2049,nolock,proto=tcp -t nfs 192.168.1.72:/wor&lt;br /&gt;
k/5d/src ./x&lt;br /&gt;
[root@mcuzone /app]#ls x&lt;br /&gt;
bin       db        include   nfsroot   src       ubi.in&lt;br /&gt;
chmod.sh  dbtest.c  lib       sh        src-x&lt;br /&gt;
[root@mcuzone /app]#ls x/src-x&lt;br /&gt;
Makefile             main.c               sysinit.c&lt;br /&gt;
bsp.c                meter_table.c        uart_gprs.c&lt;br /&gt;
commap.c             notes.md             uart_mbus_down485.c&lt;br /&gt;
db.c                 queue.c              uart_set.c&lt;br /&gt;
elect.c              read_heatmeter.c     water.c&lt;br /&gt;
gather_V1            readallmeters.c      xml.c&lt;br /&gt;
gprs.c               rs485up.c&lt;br /&gt;
include              sysfuctions.c&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the gather_V1 into collector:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[root@mcuzone /app]#cp x/src-x/gather_V1 .&lt;br /&gt;
[root@mcuzone /app]#ls&lt;br /&gt;
1runapp.sh   buff2.xml    gather_V0    gatherdb.db  rcS          x&lt;br /&gt;
buff1.xml    buff3.xml    gather_V1    log.txt      runapp.sh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Debug Log ==&lt;br /&gt;
&lt;br /&gt;
* [[8th log for 5d]]&lt;br /&gt;
&lt;br /&gt;
* [[Meter Table of XinDongAn]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Old XML Format ==&lt;br /&gt;
&lt;br /&gt;
From collector:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;root&amp;gt;&lt;br /&gt;
&amp;lt;common&amp;gt;&lt;br /&gt;
&amp;lt;sadd&amp;gt;37060001&amp;lt;/sadd&amp;gt;&lt;br /&gt;
&amp;lt;oadd&amp;gt;&amp;lt;/oadd&amp;gt;&lt;br /&gt;
&amp;lt;func_type&amp;gt;6&amp;lt;/func_type&amp;gt;&lt;br /&gt;
&amp;lt;oper_type&amp;gt;3&amp;lt;/oper_type&amp;gt;&lt;br /&gt;
&amp;lt;/common&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;trans&amp;gt;&lt;br /&gt;
&amp;lt;total_meter_num&amp;gt;1&amp;lt;/total_meter_num&amp;gt;&lt;br /&gt;
&amp;lt;frame_idx&amp;gt;1&amp;lt;/frame_idx&amp;gt;&lt;br /&gt;
&amp;lt;meter_num&amp;gt;1&amp;lt;/meter_num&lt;br /&gt;
&amp;lt;time_node&amp;gt;2017-01-05 22:38:00&amp;lt;/time_node&amp;gt;&lt;br /&gt;
&amp;lt;/trans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;row id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;f_id&amp;gt;2375&amp;lt;/f_id&amp;gt;&lt;br /&gt;
&amp;lt;f_meter_type&amp;gt;40&amp;lt;/f_meter_type&amp;gt;&lt;br /&gt;
&amp;lt;f_device_id&amp;gt;3&amp;lt;/f_device_id&amp;gt;&lt;br /&gt;
&amp;lt;f_meter_address&amp;gt;00000000000087&amp;lt;/f_meter_address&amp;gt;&lt;br /&gt;
&amp;lt;f_timestamp&amp;gt;2017-01-05 22:38:43&amp;lt;/f_timestamp&amp;gt;&lt;br /&gt;
&amp;lt;f_time&amp;gt;2017-01-05 22:38:00&amp;lt;/f_time&amp;gt;&lt;br /&gt;
&amp;lt;f_pact_tot_elec&amp;gt;null&amp;lt;/f_pact_tot_elec&amp;gt;&lt;br /&gt;
&amp;lt;f_nact_tot_elec&amp;gt;null&amp;lt;/f_nact_tot_elec&amp;gt;&lt;br /&gt;
&amp;lt;f_preact_tot_elec&amp;gt;null&amp;lt;/f_preact_tot_elec&amp;gt;&lt;br /&gt;
&amp;lt;f_nreact_tot_elec&amp;gt;null&amp;lt;/f_nreact_tot_elec&amp;gt;&lt;br /&gt;
&amp;lt;f_act_tot_elec&amp;gt;null&amp;lt;/f_act_tot_elec&amp;gt;&lt;br /&gt;
&amp;lt;f_react_tot_elec&amp;gt;null&amp;lt;/f_react_tot_elec&amp;gt;&lt;br /&gt;
&amp;lt;/row&amp;gt;&lt;br /&gt;
&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NOTES ==&lt;br /&gt;
&lt;br /&gt;
=== Meter Type ===&lt;br /&gt;
&lt;br /&gt;
* HEATMETER     0x20&lt;br /&gt;
* WATERMETER    0x10&lt;br /&gt;
* ELECTMETER    0x40&lt;br /&gt;
* GASMETER      0x30&lt;br /&gt;
* SENSORDEV     0x50    // RTU module of sensors&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ElectMeter Protocol ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *  Format：串口设置, 读取电表数据标识符, 前导符个数, 通讯类型 (0:MBUS  1:485), 通讯协议类型(0:MODBUS  1:645)&lt;br /&gt;
*/&lt;br /&gt;
uint16 gELEC_METER_Table[ELECMETER_PROTO_SUM][5] = {&lt;br /&gt;
  {ELEC_COMSET_1, 0x0000, 0, ELEC_RS485, ELEC_PROTO_MODBUS},  //力创电表               -----idx: -0-&lt;br /&gt;
  {ELEC_COMSET_1, 0x0000, 0, ELEC_RS485, ELEC_PROTO_MODBUS},  //acrel DDSD1352单相电表 -----idx: -1-&lt;br /&gt;
  {ELEC_COMSET_1, 0x0000, 0, ELEC_RS485, ELEC_PROTO_MODBUS},  //acrel DTSF1352三相电表 -----idx: -2-&lt;br /&gt;
  {ELEC_COMSET_1, 0x0000, 0, ELEC_RS485, ELEC_PROTO_MODBUS},  //acrel PZ80-E4C三相电表 -----idx: -3-&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Meter Channel ===&lt;br /&gt;
&lt;br /&gt;
Only support:&lt;br /&gt;
&lt;br /&gt;
* RS485_DOWN_CHANNEL  7&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Meter Config in Database ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
sqlite&amp;gt; .schema t_meter_info&lt;br /&gt;
CREATE TABLE t_meter_info&lt;br /&gt;
(&lt;br /&gt;
    f_id    integer primary key autoincrement,&lt;br /&gt;
    f_meter_type    varchar(2),&lt;br /&gt;
    f_device_id varchar(4),&lt;br /&gt;
    f_meter_address varchar(14),&lt;br /&gt;
    f_meter_channel varchar(2),&lt;br /&gt;
    f_meter_proto_type  varchar(2),&lt;br /&gt;
    f_install_pos   varchar(50)&lt;br /&gt;
);&lt;br /&gt;
sqlite&amp;gt; select * from t_meter_info;&lt;br /&gt;
18|40|3|00000000000001|7|0|3#地下室&lt;br /&gt;
19|20|4|11110020160429|1|0|3#under&lt;br /&gt;
&lt;br /&gt;
sqlite&amp;gt; .dump t_meter_info&lt;br /&gt;
PRAGMA foreign_keys=OFF;&lt;br /&gt;
BEGIN TRANSACTION;&lt;br /&gt;
&lt;br /&gt;
INSERT INTO &amp;quot;t_meter_info&amp;quot; VALUES(18,'40','3','00000000000001','7','0','3#地下室');&lt;br /&gt;
INSERT INTO &amp;quot;t_meter_info&amp;quot; VALUES(19,'20','4','11110020160429','1','0','3#under');&lt;br /&gt;
COMMIT;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Serial Console ===&lt;br /&gt;
&lt;br /&gt;
* CP2102_PIN26 --- ARM9_CORE_J2_32_DRXD&lt;br /&gt;
* CP2102_PIN25 --- ARM9_CORE_J2_30_DTXD&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RS485_1 ===&lt;br /&gt;
&lt;br /&gt;
* RS485_1_A+ --- MAX485_PIN6&lt;br /&gt;
* RS485_1_B- --- MAX485_PIN7&lt;br /&gt;
&lt;br /&gt;
* MAX485_PIN4 --- ARM9_CORE_J2_68_TXD0&lt;br /&gt;
* MAX485_PIN1 --- ARM9_CORE_J2_69_RXD0&lt;br /&gt;
* MAX485_PIN2 &amp;amp; 3 --- ARM9_CORE_J1_69_PC30&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RS485_2 ===&lt;br /&gt;
&lt;br /&gt;
* RS485_2_A+ --- MAX485_PIN6&lt;br /&gt;
* RS485_2_B- --- MAX485_PIN7&lt;br /&gt;
&lt;br /&gt;
* MAX485_PIN4 --- ARM9_CORE_J2_55_CANTX1&lt;br /&gt;
* MAX485_PIN1 --- ARM9_CORE_J2__57_CANRX1&lt;br /&gt;
* MAX485_PIN2 &amp;amp; 3 --- ARM9_CORE_J1_68_PC31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drivers ==&lt;br /&gt;
&lt;br /&gt;
atmel_usart:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.1: ttyS1 at MMIO 0xf801c000 (irq = 5) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.2: ttyS2 at MMIO 0xf8020000 (irq = 6) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.3: ttyS3 at MMIO 0xf8024000 (irq = 7) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.5: ttyS5 at MMIO 0xf8040000 (irq = 15) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.6: ttyS6 at MMIO 0xf8044000 (irq = 16) is a ATMEL_SERIAL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define DEVICE4851      &amp;quot;/dev/ttyS1&amp;quot;&lt;br /&gt;
#define DEVICE4852      &amp;quot;/dev/ttyS2&amp;quot;&lt;br /&gt;
#define DEVICEGPRS      &amp;quot;/dev/ttyS3&amp;quot;&lt;br /&gt;
#define DEVICEMBUS      &amp;quot;/dev/ttyS6&amp;quot;&lt;br /&gt;
#define IO_CONTROL  &amp;quot;/dev/CONTROL_IO&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Boot log ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
RomBOOT&lt;br /&gt;
Start AT91Bootstrap...&lt;br /&gt;
Init DDR... Done!&lt;br /&gt;
Loading 1-Wire info...&lt;br /&gt;
Enumerate all roms:&lt;br /&gt;
Done, 0x0 1-wire chips found!&lt;br /&gt;
&lt;br /&gt;
No 1-Wire chip found on EXID=0x0x2!&lt;br /&gt;
MCUzone:try to load from preset area...&lt;br /&gt;
sn: 0xa0284a4;   rev: 0x248421&lt;br /&gt;
Downloading image...&lt;br /&gt;
chip id: 0xecda&lt;br /&gt;
Copy 0x50000 bytes from 0x40000 to 0x26f00000&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 2010.06 (May 24 2012 - 14:30:50)&lt;br /&gt;
&lt;br /&gt;
DRAM:  128 MiB&lt;br /&gt;
NAND:  256 MiB&lt;br /&gt;
*** Warning - bad CRC or NAND, using default environment&lt;br /&gt;
&lt;br /&gt;
In:    serial&lt;br /&gt;
Out:   serial&lt;br /&gt;
Err:   serial&lt;br /&gt;
Net:   macb0&lt;br /&gt;
macb0: Starting autonegotiation...&lt;br /&gt;
macb0: Autonegotiation complete&lt;br /&gt;
macb0: link up, 100Mbps full-duplex (lpa: 0x4de1)&lt;br /&gt;
Hit any key to stop autoboot:  0 &lt;br /&gt;
&lt;br /&gt;
NAND read: device 0 offset 0x200000, size 0x250000&lt;br /&gt;
 2424832 bytes read: OK&lt;br /&gt;
## Booting kernel from Legacy Image at 22000000 ...&lt;br /&gt;
   Image Name:   Linux-2.6.39&lt;br /&gt;
   Image Type:   ARM Linux Kernel Image (uncompressed)&lt;br /&gt;
   Data Size:    2107352 Bytes = 2 MiB&lt;br /&gt;
   Load Address: 20008000&lt;br /&gt;
   Entry Point:  20008000&lt;br /&gt;
   Verifying Checksum ... OK&lt;br /&gt;
   Loading Kernel Image ... OK&lt;br /&gt;
OK&lt;br /&gt;
&lt;br /&gt;
Starting kernel ...&lt;br /&gt;
&lt;br /&gt;
Uncompressing Linux... done, booting the kernel.&lt;br /&gt;
Linux version 2.6.39 (root@mcuzone) (gcc version 4.5.2 (Sourcery G++ Lite 2011.03-41) ) #30 Wed Aug 28 10:47:14 CST 2013&lt;br /&gt;
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177&lt;br /&gt;
CPU: VIVT data cache, VIVT instruction cache&lt;br /&gt;
Machine: Atmel AT91SAM9X5-EK&lt;br /&gt;
Memory policy: ECC disabled, Data cache writeback&lt;br /&gt;
Clocks: CPU 400 MHz, master 133 MHz, main 12.000 MHz&lt;br /&gt;
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512&lt;br /&gt;
Kernel command line: mem=128M console=ttyS0,115200 mtdparts=atmel_nand:8M(bootstrap/uboot/kernel)ro,-(rootfs) root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs&lt;br /&gt;
PID hash table entries: 512 (order: -1, 2048 bytes)&lt;br /&gt;
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)&lt;br /&gt;
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)&lt;br /&gt;
Memory: 128MB = 128MB total&lt;br /&gt;
Memory: 125696k/125696k available, 5376k reserved, 0K highmem&lt;br /&gt;
Virtual kernel memory layout:&lt;br /&gt;
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)&lt;br /&gt;
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)&lt;br /&gt;
    DMA     : 0xff000000 - 0xffe00000   (  14 MB)&lt;br /&gt;
    vmalloc : 0xc8800000 - 0xfee00000   ( 870 MB)&lt;br /&gt;
    lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)&lt;br /&gt;
    modules : 0xbf000000 - 0xc0000000   (  16 MB)&lt;br /&gt;
      .init : 0xc0008000 - 0xc002a000   ( 136 kB)&lt;br /&gt;
      .text : 0xc002a000 - 0xc03e0708   (3802 kB)&lt;br /&gt;
      .data : 0xc03e2000 - 0xc0408a40   ( 155 kB)&lt;br /&gt;
NR_IRQS:192&lt;br /&gt;
AT91: 128 gpio irqs in 4 banks&lt;br /&gt;
Console: colour dummy device 80x30&lt;br /&gt;
console [ttyS0] enabled&lt;br /&gt;
Calibrating delay loop... 199.06 BogoMIPS (lpj=995328)&lt;br /&gt;
pid_max: default: 32768 minimum: 301&lt;br /&gt;
Mount-cache hash table entries: 512&lt;br /&gt;
CPU: Testing write buffer coherency: ok&lt;br /&gt;
NET: Registered protocol family 16&lt;br /&gt;
AT91: CM rev B and higher&lt;br /&gt;
AT91: EK rev B and higher&lt;br /&gt;
AT91: Power Management (with slow clock mode)&lt;br /&gt;
AT91: Starting after user reset&lt;br /&gt;
bio: create slab &amp;lt;bio-0&amp;gt; at 0&lt;br /&gt;
SCSI subsystem initialized&lt;br /&gt;
usbcore: registered new interface driver usbfs&lt;br /&gt;
usbcore: registered new interface driver hub&lt;br /&gt;
usbcore: registered new device driver usb&lt;br /&gt;
i2c-gpio i2c-gpio.0: using pins 62 (SDA) and 63 (SCL)&lt;br /&gt;
at_hdmac at_hdmac.0: Atmel AHB DMA Controller ( cpy slave ), 8 channels&lt;br /&gt;
at_hdmac at_hdmac.1: Atmel AHB DMA Controller ( cpy slave ), 8 channels&lt;br /&gt;
cfg80211: Calling CRDA to update world regulatory domain&lt;br /&gt;
Switching to clocksource tcb_clksrc&lt;br /&gt;
NET: Registered protocol family 2&lt;br /&gt;
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)&lt;br /&gt;
TCP established hash table entries: 4096 (order: 3, 32768 bytes)&lt;br /&gt;
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)&lt;br /&gt;
TCP: Hash tables configured (established 4096 bind 4096)&lt;br /&gt;
TCP reno registered&lt;br /&gt;
UDP hash table entries: 256 (order: 0, 4096 bytes)&lt;br /&gt;
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)&lt;br /&gt;
NET: Registered protocol family 1&lt;br /&gt;
RPC: Registered udp transport module.&lt;br /&gt;
RPC: Registered tcp transport module.&lt;br /&gt;
RPC: Registered tcp NFSv4.1 backchannel transport module.&lt;br /&gt;
NetWinder Floating Point Emulator V0.97 (double precision)&lt;br /&gt;
JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.&lt;br /&gt;
msgmni has been set to 245&lt;br /&gt;
io scheduler noop registered (default)&lt;br /&gt;
atmel_usart.0: ttyS0 at MMIO 0xfefff200 (irq = 1) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.1: ttyS1 at MMIO 0xf801c000 (irq = 5) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.2: ttyS2 at MMIO 0xf8020000 (irq = 6) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.3: ttyS3 at MMIO 0xf8024000 (irq = 7) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.5: ttyS5 at MMIO 0xf8040000 (irq = 15) is a ATMEL_SERIAL&lt;br /&gt;
atmel_usart.6: ttyS6 at MMIO 0xf8044000 (irq = 16) is a ATMEL_SERIAL&lt;br /&gt;
pioa_baseaddr is ok &lt;br /&gt;
pioc_baseaddr  is ok &lt;br /&gt;
CONTROL_IO	initialized&lt;br /&gt;
brd: module loaded&lt;br /&gt;
loop: module loaded&lt;br /&gt;
ssc ssc.0: Atmel SSC device at 0xc8898000 (irq 28)&lt;br /&gt;
atmel_nand atmel_nand: Using dma0chan0 for DMA transfers.&lt;br /&gt;
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)&lt;br /&gt;
atmel_pmecc_init_params&lt;br /&gt;
Scanning device for bad blocks&lt;br /&gt;
Bad eraseblock 220 at 0x000001b80000&lt;br /&gt;
Bad eraseblock 590 at 0x0000049c0000&lt;br /&gt;
Bad eraseblock 1126 at 0x000008cc0000&lt;br /&gt;
Bad eraseblock 1268 at 0x000009e80000&lt;br /&gt;
Bad eraseblock 1313 at 0x00000a420000&lt;br /&gt;
2 cmdlinepart partitions found on MTD device atmel_nand&lt;br /&gt;
Creating 2 MTD partitions on &amp;quot;atmel_nand&amp;quot;:&lt;br /&gt;
0x000000000000-0x000000800000 : &amp;quot;bootstrap/uboot/kernel&amp;quot;&lt;br /&gt;
0x000000800000-0x000010000000 : &amp;quot;rootfs&amp;quot;&lt;br /&gt;
UBI: attaching mtd1 to ubi0&lt;br /&gt;
UBI: physical eraseblock size:   131072 bytes (128 KiB)&lt;br /&gt;
UBI: logical eraseblock size:    126976 bytes&lt;br /&gt;
UBI: smallest flash I/O unit:    2048&lt;br /&gt;
UBI: VID header offset:          2048 (aligned 2048)&lt;br /&gt;
UBI: data offset:                4096&lt;br /&gt;
UBI: max. sequence number:       88&lt;br /&gt;
UBI: attached mtd1 to ubi0&lt;br /&gt;
UBI: MTD device name:            &amp;quot;rootfs&amp;quot;&lt;br /&gt;
UBI: MTD device size:            248 MiB&lt;br /&gt;
UBI: number of good PEBs:        1979&lt;br /&gt;
UBI: number of bad PEBs:         5&lt;br /&gt;
UBI: number of corrupted PEBs:   0&lt;br /&gt;
UBI: max. allowed volumes:       128&lt;br /&gt;
UBI: wear-leveling threshold:    4096&lt;br /&gt;
UBI: number of internal volumes: 1&lt;br /&gt;
UBI: number of user volumes:     1&lt;br /&gt;
UBI: available PEBs:             0&lt;br /&gt;
UBI: total number of reserved PEBs: 1979&lt;br /&gt;
UBI: number of PEBs reserved for bad PEB handling: 19&lt;br /&gt;
UBI: max/mean erase counter: 2/0&lt;br /&gt;
UBI: image sequence number:  216742870&lt;br /&gt;
UBI: background thread &amp;quot;ubi_bgt0d&amp;quot; started, PID 360&lt;br /&gt;
macb macb.0: invalid hw address, using random&lt;br /&gt;
macb macb.0: eth0: Features changed: 0x00004800 -&amp;gt; 0x00004000&lt;br /&gt;
MACB_mii_bus: probed&lt;br /&gt;
eth0: Atmel MACB at 0xf802c000 irq 24 (52:ac:b8:80:5f:b2)&lt;br /&gt;
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:00, irq=-1)&lt;br /&gt;
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver&lt;br /&gt;
atmel-ehci atmel-ehci: Atmel EHCI UHP HS&lt;br /&gt;
atmel-ehci atmel-ehci: new USB bus registered, assigned bus number 1&lt;br /&gt;
atmel-ehci atmel-ehci: irq 22, io mem 0x00700000&lt;br /&gt;
atmel-ehci atmel-ehci: USB 2.0 started, EHCI 1.00&lt;br /&gt;
hub 1-0:1.0: USB hub found&lt;br /&gt;
hub 1-0:1.0: 3 ports detected&lt;br /&gt;
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver&lt;br /&gt;
at91_ohci at91_ohci: AT91 OHCI&lt;br /&gt;
at91_ohci at91_ohci: new USB bus registered, assigned bus number 2&lt;br /&gt;
at91_ohci at91_ohci: irq 22, io mem 0x00600000&lt;br /&gt;
hub 2-0:1.0: USB hub found&lt;br /&gt;
hub 2-0:1.0: 3 ports detected&lt;br /&gt;
Initializing USB Mass Storage driver...&lt;br /&gt;
usbcore: registered new interface driver usb-storage&lt;br /&gt;
USB Mass Storage support registered.&lt;br /&gt;
usbcore: registered new interface driver libusual&lt;br /&gt;
atmel_usba_udc atmel_usba_udc: MMIO registers at 0xf803c000 mapped at c88fe000&lt;br /&gt;
atmel_usba_udc atmel_usba_udc: FIFO at 0x00500000 mapped at d9100000&lt;br /&gt;
atmel_tsadcc atmel_tsadcc: Master clock is set at: 133333333 Hz&lt;br /&gt;
atmel_tsadcc atmel_tsadcc: Prescaler is set at: 221&lt;br /&gt;
input: atmel touch screen controller as /devices/platform/atmel_tsadcc/input/input0&lt;br /&gt;
rtc-rx8025 0-0032: rtc core: registered rx8025 as rtc0&lt;br /&gt;
i2c /dev entries driver&lt;br /&gt;
usbcore: registered new interface driver usbhid&lt;br /&gt;
usbhid: USB HID core driver&lt;br /&gt;
nf_conntrack version 0.5.0 (1964 buckets, 7856 max)&lt;br /&gt;
ip_tables: (C) 2000-2006 Netfilter Core Team&lt;br /&gt;
TCP cubic registered&lt;br /&gt;
NET: Registered protocol family 17&lt;br /&gt;
lib80211: common routines for IEEE802.11 drivers&lt;br /&gt;
Registering the dns_resolver key type&lt;br /&gt;
rtc-rx8025 0-0032: setting system clock to 2017-01-06 00:38:50 UTC (1483634330)&lt;br /&gt;
atmel_mci atmel_mci.0: Using dma0chan1 for DMA transfers&lt;br /&gt;
atmel_mci atmel_mci.0: Atmel MCI controller at 0xf0008000 irq 12, 1 slots&lt;br /&gt;
atmel_mci atmel_mci.1: Using dma1chan0 for DMA transfers&lt;br /&gt;
atmel_mci atmel_mci.1: Atmel MCI controller at 0xf000c000 irq 26, 1 slots&lt;br /&gt;
UBIFS: recovery needed&lt;br /&gt;
UBIFS: recovery completed&lt;br /&gt;
UBIFS: mounted UBI device 0, volume 0, name &amp;quot;rootfs&amp;quot;&lt;br /&gt;
UBIFS: file system size:   58662912 bytes (57288 KiB, 55 MiB, 462 LEBs)&lt;br /&gt;
UBIFS: journal size:       7872512 bytes (7688 KiB, 7 MiB, 62 LEBs)&lt;br /&gt;
UBIFS: media format:       w4/r0 (latest is w4/r0)&lt;br /&gt;
UBIFS: default compressor: lzo&lt;br /&gt;
UBIFS: reserved for root:  0 bytes (0 KiB)&lt;br /&gt;
VFS: Mounted root (ubifs filesystem) on device 0:12.&lt;br /&gt;
Freeing init memory: 136K&lt;br /&gt;
********************************&lt;br /&gt;
 Exec rcS &lt;br /&gt;
********************************&lt;br /&gt;
********mount all********&lt;br /&gt;
mount: according to /proc/mounts, porc is already mounted on /proc&lt;br /&gt;
mount: mounting usbfs on /proc/bus/usb failed: No such file or directory&lt;br /&gt;
********Starting mdev********&lt;br /&gt;
This may take some time ...&lt;br /&gt;
--------Start Local Services--------&lt;br /&gt;
********Starting telnetd********&lt;br /&gt;
*********alsa restore***********&lt;br /&gt;
alsactl: load_state:1625: No soundcards found...&lt;br /&gt;
*********touchscreen************&lt;br /&gt;
********************************&lt;br /&gt;
     513 xi'an R&amp;amp;D Center       &lt;br /&gt;
                                &lt;br /&gt;
   Linux For Energy Monitor     &lt;br /&gt;
                                &lt;br /&gt;
********************************&lt;br /&gt;
********************************************&lt;br /&gt;
              program restart!&lt;br /&gt;
********************************************&lt;br /&gt;
&lt;br /&gt;
mcuzone login: Creat QMSG_FILE OK.&lt;br /&gt;
g_uiQmsgFd = 0.&lt;br /&gt;
XMLBuf_Init OK.&lt;br /&gt;
QueuesInit OK!&lt;br /&gt;
open_IOControl OK!&lt;br /&gt;
[db.c][read_meter_info][996]read meter info: select f_meter_address, f_meter_type, f_meter_channel, f_id, f_install_pos, f_device_id, f_meter_proto_type from t_meter_info order by f_meter_channel, f_id desc;&lt;br /&gt;
[db.c][each_meter_info][1027] meter_type length : 2&lt;br /&gt;
[db.c][each_meter_info][1030] meter_type: 40&lt;br /&gt;
[db.c][each_meter_info][1052]135000000&lt;br /&gt;
Create RS485Up_Rec_pthreadID OK!&lt;br /&gt;
Create UartGprs_Rec_pthreadID OK!&lt;br /&gt;
Create UartMbus_Rec_pthreadID OK!&lt;br /&gt;
Create UartDown485_Rec_pthreadID OK!&lt;br /&gt;
Create pthread_GPRS_Mana OK!&lt;br /&gt;
Create pthread_GPRS_IPD OK!&lt;br /&gt;
Create pthread_GprsDataDeal OK!&lt;br /&gt;
Create pthread_RS485UpDeal OK!&lt;br /&gt;
Create pthread_ReadAllMeters OK!&lt;br /&gt;
Create pthread_up_long_data OK!&lt;br /&gt;
RS485Down com parameter set OK.&lt;br /&gt;
MBUS com parameter set OK.&lt;br /&gt;
GPRS com parameter set OK.&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 有功无功 ==&lt;br /&gt;
&lt;br /&gt;
根据《多功能电能表通信协议》DL/T645-2007的规定，我们将一个平面坐标系的横轴定义为无功功率，纵轴定义为有功功率，二个轴将一个平面划分为四个区域，左上角的为Ⅰ象限，顺时针依次为Ⅱ象限、Ⅲ象限和Ⅳ象限；Ⅰ象限和Ⅱ象限无功定义为正向无功， Ⅲ象限和Ⅳ象限无功定义为反向无功；&lt;br /&gt;
&lt;br /&gt;
我们按下面的要求定义实际功率的方向：&lt;br /&gt;
&lt;br /&gt;
* 正向有功功率：即输入有功功率，是电网向用户送电，是用户用电功率；&lt;br /&gt;
* 反向有功功率：即输出有功功率，是用户向电网送电，是用户发电功率；&lt;br /&gt;
* 正向无功功率：即输入无功功率，是电网向用户送无功，是用户用无功功率；&lt;br /&gt;
* 反向无功功率：即输出无功功率，是用户向电网送无功，是用户发无功功率；&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ⅰ象限无功：输入有功功率，输入无功功率，用户为阻感性负载；&lt;br /&gt;
* Ⅱ象限无功：输出有功功率，输入无功功率，用户负荷相当于一台欠励磁发电机；&lt;br /&gt;
* Ⅲ象限无功：输出有功功率，输出无功功率，用户负荷相当于一台过励磁发电机；&lt;br /&gt;
* Ⅳ象限无功：输入有功功率，输出无功功率，用户为阻容性负载&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
正向无功是指系统呈感性      反向无功是指系统呈容性  ，正反向都计量无功&lt;br /&gt;
&lt;br /&gt;
* http://www.sheweikeji.com/fuwu/?tid=464&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* DTSD106-M100 三相电子式电能表用户使用手册: http://www.go-gddq.com/down/2011-10/11102117032297.pdf&lt;br /&gt;
* ZLAN5102-3 用户使用手册l: http://www.zlmcu.com/download/ZLAN5102-3.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/Modbus</id>
		<title>Modbus</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/Modbus"/>
				<updated>2026-04-09T03:33:14Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 库 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
[[文件:Modbus-rtu-framec.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''相关标准：'''&lt;br /&gt;
&lt;br /&gt;
* Modbus协议（对应中国国家标准GB/T19582-2008）&lt;br /&gt;
* [http://www.jianbiaoku.com/webarbs/book/14520/332948.shtml CJ/T224-2012 电子远传水表 ]&lt;br /&gt;
* [https://wenku.baidu.com/view/b5e3e9d776a20029bd642d6d.html DL/T645-2007 多功能电能表通信协议] [http://www.geshe.com/zh-cn/solutions/power-electronics-test/23-dlt645-protocol-test 测试]&lt;br /&gt;
* [https://wenku.baidu.com/view/750ea0aff80f76c66137ee06eff9aef8951e4866.html DL/T645-2007 南方电网扩展协议]&lt;br /&gt;
* [[Bim]]&lt;br /&gt;
* [http://www.sdhxsb.com/ShowProducts.asp?id=103 环翔水表]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Address ===&lt;br /&gt;
&lt;br /&gt;
Valid slave device addresses are in the range of 0 ... 247 (decimal). &lt;br /&gt;
&lt;br /&gt;
The individual slave devices are assigned addresses in the range of 1... 247. &lt;br /&gt;
&lt;br /&gt;
Value 0 is reserved for broadcast messages (no response). &lt;br /&gt;
&lt;br /&gt;
When the slave sends its response, it places its own address in this address field of the response frame to let the master know which slave is responding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function ===&lt;br /&gt;
&lt;br /&gt;
Valid codes are in the range of 1... 255 (decimal). &lt;br /&gt;
&lt;br /&gt;
The function code field tells the slave what kind of action to perform. &lt;br /&gt;
&lt;br /&gt;
For a normal response, the slave simply echoes the original function code. &lt;br /&gt;
&lt;br /&gt;
For an exception response, the slave returns a code that is equivalent to the original function code with its most significant bit set to a logic 1. &lt;br /&gt;
&lt;br /&gt;
All Modbus devices recognize the same set of function codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
The data field contains additional information which the slave must use to take the action defined by the function code. &lt;br /&gt;
&lt;br /&gt;
This can include items like register addresses, quantity of items to be handled, etc. &lt;br /&gt;
&lt;br /&gt;
If no error occurs, the data field contains the data requested. If an error occurs, the field contains an exception code that the master application can use to determine the next action to be taken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CRC ===&lt;br /&gt;
&lt;br /&gt;
The checksum is calculated by the master and sent to the slave. &lt;br /&gt;
&lt;br /&gt;
The checksum is re-calculated by the slave and compared to the value sent by the master. If a difference is detected, the slave will not construct a response to the master.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
&lt;br /&gt;
=== Discrete Coils/Flags ===&lt;br /&gt;
&lt;br /&gt;
* 0x01 - Read Coils&lt;br /&gt;
* 0x02 - Read Discrete Inputs&lt;br /&gt;
* 0x05 - Write Single Coil&lt;br /&gt;
* 0x0F - Write Multiple Coils&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
* 0x03 - Read Holding Registers&lt;br /&gt;
* 0x04 - Read Input Registers&lt;br /&gt;
* 0x06 - Write Single Register&lt;br /&gt;
* 0x10 - Write Multiple Registers&lt;br /&gt;
* 0x16 - Mask Write Register&lt;br /&gt;
* 0x17 - Read/Write Multiple registers&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x14 - Read File Record&lt;br /&gt;
* 0x15 - Write File Record&lt;br /&gt;
* 0x2B/0x0E) - Read Device Identification&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRC ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
uint16_t crc16(const uint8_t *data, uint16_t len)&lt;br /&gt;
{&lt;br /&gt;
    static const uint16_t crc_table[] = {&lt;br /&gt;
        0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,&lt;br /&gt;
        0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,&lt;br /&gt;
        0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,&lt;br /&gt;
        0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,&lt;br /&gt;
        0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,&lt;br /&gt;
        0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,&lt;br /&gt;
        0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,&lt;br /&gt;
        0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,&lt;br /&gt;
        0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,&lt;br /&gt;
        0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,&lt;br /&gt;
        0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,&lt;br /&gt;
        0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,&lt;br /&gt;
        0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,&lt;br /&gt;
        0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,&lt;br /&gt;
        0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,&lt;br /&gt;
        0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,&lt;br /&gt;
        0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,&lt;br /&gt;
        0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,&lt;br /&gt;
        0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,&lt;br /&gt;
        0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,&lt;br /&gt;
        0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,&lt;br /&gt;
        0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,&lt;br /&gt;
        0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,&lt;br /&gt;
        0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,&lt;br /&gt;
        0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,&lt;br /&gt;
        0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,&lt;br /&gt;
        0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,&lt;br /&gt;
        0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,&lt;br /&gt;
        0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,&lt;br /&gt;
        0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,&lt;br /&gt;
        0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,&lt;br /&gt;
        0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    uint8_t temp;&lt;br /&gt;
    uint16_t crcw = 0xFFFF;&lt;br /&gt;
&lt;br /&gt;
    while (len--) {&lt;br /&gt;
        temp = *data++ ^ crcw;&lt;br /&gt;
        crcw &amp;gt;&amp;gt;= 8;&lt;br /&gt;
        crcw ^= crc_table[temp];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return crcw;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Broadcast to read meter addr ===&lt;br /&gt;
&lt;br /&gt;
'''Send:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x00 0x03 0x0000 0x0001 0x85DB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Received:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x01 0x03 0x02 0x0001 0x7984&lt;br /&gt;
0x17 0x03 0x02 0x0001 0x7777&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 库 ==&lt;br /&gt;
&lt;br /&gt;
* libmodbus: https://github.com/stephane/libmodbus&lt;br /&gt;
* FreeModbus: https://www.freemodbus.org     https://github.com/nucleron/freemodbus-v1.5.0&lt;br /&gt;
* nanoModbus: https://github.com/debevv/nanoMODBUS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 调试工具 ==&lt;br /&gt;
&lt;br /&gt;
* modpoll: 经典命令行工具，单次读写，没有交互模式&lt;br /&gt;
* mbpoll: modpoll 的开源替代&lt;br /&gt;
* QmodMaster: Windows GUI 工具，功能全，笨重&lt;br /&gt;
* pymodbus REPL: python 工具，需要写简单的代码&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
读一组寄存器：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ modpoll -m tcp -a 1 -r 100 -c 10 192.168.1.66&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/Modbus</id>
		<title>Modbus</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/Modbus"/>
				<updated>2026-04-09T03:31:57Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Function */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
[[文件:Modbus-rtu-framec.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''相关标准：'''&lt;br /&gt;
&lt;br /&gt;
* Modbus协议（对应中国国家标准GB/T19582-2008）&lt;br /&gt;
* [http://www.jianbiaoku.com/webarbs/book/14520/332948.shtml CJ/T224-2012 电子远传水表 ]&lt;br /&gt;
* [https://wenku.baidu.com/view/b5e3e9d776a20029bd642d6d.html DL/T645-2007 多功能电能表通信协议] [http://www.geshe.com/zh-cn/solutions/power-electronics-test/23-dlt645-protocol-test 测试]&lt;br /&gt;
* [https://wenku.baidu.com/view/750ea0aff80f76c66137ee06eff9aef8951e4866.html DL/T645-2007 南方电网扩展协议]&lt;br /&gt;
* [[Bim]]&lt;br /&gt;
* [http://www.sdhxsb.com/ShowProducts.asp?id=103 环翔水表]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Address ===&lt;br /&gt;
&lt;br /&gt;
Valid slave device addresses are in the range of 0 ... 247 (decimal). &lt;br /&gt;
&lt;br /&gt;
The individual slave devices are assigned addresses in the range of 1... 247. &lt;br /&gt;
&lt;br /&gt;
Value 0 is reserved for broadcast messages (no response). &lt;br /&gt;
&lt;br /&gt;
When the slave sends its response, it places its own address in this address field of the response frame to let the master know which slave is responding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function ===&lt;br /&gt;
&lt;br /&gt;
Valid codes are in the range of 1... 255 (decimal). &lt;br /&gt;
&lt;br /&gt;
The function code field tells the slave what kind of action to perform. &lt;br /&gt;
&lt;br /&gt;
For a normal response, the slave simply echoes the original function code. &lt;br /&gt;
&lt;br /&gt;
For an exception response, the slave returns a code that is equivalent to the original function code with its most significant bit set to a logic 1. &lt;br /&gt;
&lt;br /&gt;
All Modbus devices recognize the same set of function codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
The data field contains additional information which the slave must use to take the action defined by the function code. &lt;br /&gt;
&lt;br /&gt;
This can include items like register addresses, quantity of items to be handled, etc. &lt;br /&gt;
&lt;br /&gt;
If no error occurs, the data field contains the data requested. If an error occurs, the field contains an exception code that the master application can use to determine the next action to be taken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CRC ===&lt;br /&gt;
&lt;br /&gt;
The checksum is calculated by the master and sent to the slave. &lt;br /&gt;
&lt;br /&gt;
The checksum is re-calculated by the slave and compared to the value sent by the master. If a difference is detected, the slave will not construct a response to the master.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
&lt;br /&gt;
=== Discrete Coils/Flags ===&lt;br /&gt;
&lt;br /&gt;
* 0x01 - Read Coils&lt;br /&gt;
* 0x02 - Read Discrete Inputs&lt;br /&gt;
* 0x05 - Write Single Coil&lt;br /&gt;
* 0x0F - Write Multiple Coils&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
* 0x03 - Read Holding Registers&lt;br /&gt;
* 0x04 - Read Input Registers&lt;br /&gt;
* 0x06 - Write Single Register&lt;br /&gt;
* 0x10 - Write Multiple Registers&lt;br /&gt;
* 0x16 - Mask Write Register&lt;br /&gt;
* 0x17 - Read/Write Multiple registers&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 0x14 - Read File Record&lt;br /&gt;
* 0x15 - Write File Record&lt;br /&gt;
* 0x2B/0x0E) - Read Device Identification&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRC ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
uint16_t crc16(const uint8_t *data, uint16_t len)&lt;br /&gt;
{&lt;br /&gt;
    static const uint16_t crc_table[] = {&lt;br /&gt;
        0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,&lt;br /&gt;
        0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,&lt;br /&gt;
        0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,&lt;br /&gt;
        0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,&lt;br /&gt;
        0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,&lt;br /&gt;
        0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,&lt;br /&gt;
        0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,&lt;br /&gt;
        0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,&lt;br /&gt;
        0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,&lt;br /&gt;
        0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,&lt;br /&gt;
        0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,&lt;br /&gt;
        0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,&lt;br /&gt;
        0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,&lt;br /&gt;
        0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,&lt;br /&gt;
        0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,&lt;br /&gt;
        0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,&lt;br /&gt;
        0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,&lt;br /&gt;
        0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,&lt;br /&gt;
        0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,&lt;br /&gt;
        0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,&lt;br /&gt;
        0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,&lt;br /&gt;
        0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,&lt;br /&gt;
        0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,&lt;br /&gt;
        0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,&lt;br /&gt;
        0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,&lt;br /&gt;
        0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,&lt;br /&gt;
        0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,&lt;br /&gt;
        0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,&lt;br /&gt;
        0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,&lt;br /&gt;
        0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,&lt;br /&gt;
        0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,&lt;br /&gt;
        0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    uint8_t temp;&lt;br /&gt;
    uint16_t crcw = 0xFFFF;&lt;br /&gt;
&lt;br /&gt;
    while (len--) {&lt;br /&gt;
        temp = *data++ ^ crcw;&lt;br /&gt;
        crcw &amp;gt;&amp;gt;= 8;&lt;br /&gt;
        crcw ^= crc_table[temp];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return crcw;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Broadcast to read meter addr ===&lt;br /&gt;
&lt;br /&gt;
'''Send:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x00 0x03 0x0000 0x0001 0x85DB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Received:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x01 0x03 0x02 0x0001 0x7984&lt;br /&gt;
0x17 0x03 0x02 0x0001 0x7777&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 库 ==&lt;br /&gt;
&lt;br /&gt;
* libmodbus: https://github.com/stephane/libmodbus&lt;br /&gt;
* FreeModbus: https://www.freemodbus.org     https://github.com/nucleron/freemodbus-v1.5.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 调试工具 ==&lt;br /&gt;
&lt;br /&gt;
* modpoll: 经典命令行工具，单次读写，没有交互模式&lt;br /&gt;
* mbpoll: modpoll 的开源替代&lt;br /&gt;
* QmodMaster: Windows GUI 工具，功能全，笨重&lt;br /&gt;
* pymodbus REPL: python 工具，需要写简单的代码&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
读一组寄存器：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ modpoll -m tcp -a 1 -r 100 -c 10 192.168.1.66&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/Modbus</id>
		<title>Modbus</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/Modbus"/>
				<updated>2026-04-09T03:11:34Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
[[文件:Modbus-rtu-framec.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''相关标准：'''&lt;br /&gt;
&lt;br /&gt;
* Modbus协议（对应中国国家标准GB/T19582-2008）&lt;br /&gt;
* [http://www.jianbiaoku.com/webarbs/book/14520/332948.shtml CJ/T224-2012 电子远传水表 ]&lt;br /&gt;
* [https://wenku.baidu.com/view/b5e3e9d776a20029bd642d6d.html DL/T645-2007 多功能电能表通信协议] [http://www.geshe.com/zh-cn/solutions/power-electronics-test/23-dlt645-protocol-test 测试]&lt;br /&gt;
* [https://wenku.baidu.com/view/750ea0aff80f76c66137ee06eff9aef8951e4866.html DL/T645-2007 南方电网扩展协议]&lt;br /&gt;
* [[Bim]]&lt;br /&gt;
* [http://www.sdhxsb.com/ShowProducts.asp?id=103 环翔水表]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Address ===&lt;br /&gt;
&lt;br /&gt;
Valid slave device addresses are in the range of 0 ... 247 (decimal). &lt;br /&gt;
&lt;br /&gt;
The individual slave devices are assigned addresses in the range of 1... 247. &lt;br /&gt;
&lt;br /&gt;
Value 0 is reserved for broadcast messages (no response). &lt;br /&gt;
&lt;br /&gt;
When the slave sends its response, it places its own address in this address field of the response frame to let the master know which slave is responding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Function ===&lt;br /&gt;
&lt;br /&gt;
Valid codes are in the range of 1... 255 (decimal). &lt;br /&gt;
&lt;br /&gt;
The function code field tells the slave what kind of action to perform. &lt;br /&gt;
&lt;br /&gt;
For a normal response, the slave simply echoes the original function code. &lt;br /&gt;
&lt;br /&gt;
For an exception response, the slave returns a code that is equivalent to the original function code with its most significant bit set to a logic 1. &lt;br /&gt;
&lt;br /&gt;
All Modbus devices recognize the same set of function codes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data ===&lt;br /&gt;
&lt;br /&gt;
The data field contains additional information which the slave must use to take the action defined by the function code. &lt;br /&gt;
&lt;br /&gt;
This can include items like register addresses, quantity of items to be handled, etc. &lt;br /&gt;
&lt;br /&gt;
If no error occurs, the data field contains the data requested. If an error occurs, the field contains an exception code that the master application can use to determine the next action to be taken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CRC ===&lt;br /&gt;
&lt;br /&gt;
The checksum is calculated by the master and sent to the slave. &lt;br /&gt;
&lt;br /&gt;
The checksum is re-calculated by the slave and compared to the value sent by the master. If a difference is detected, the slave will not construct a response to the master.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Function ==&lt;br /&gt;
&lt;br /&gt;
=== Discrete Coils/Flags ===&lt;br /&gt;
&lt;br /&gt;
* 0x01 - Read Coils&lt;br /&gt;
* 0x02 - Read Discrete Inputs&lt;br /&gt;
* 0x05 - Write Single Coil&lt;br /&gt;
* 0x0F - Write Multiple Coils&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Registers ===&lt;br /&gt;
&lt;br /&gt;
* 0x03 - Read Holding Registers&lt;br /&gt;
* 0x04 - Read Input Registers&lt;br /&gt;
* 0x06 - Write Single Register&lt;br /&gt;
* 0x10 - Write Multiple Registers&lt;br /&gt;
* 0x16 - Mask Write Register&lt;br /&gt;
* 0x17 - Read Write Multiple Registers&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRC ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
uint16_t crc16(const uint8_t *data, uint16_t len)&lt;br /&gt;
{&lt;br /&gt;
    static const uint16_t crc_table[] = {&lt;br /&gt;
        0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,&lt;br /&gt;
        0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,&lt;br /&gt;
        0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,&lt;br /&gt;
        0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,&lt;br /&gt;
        0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,&lt;br /&gt;
        0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,&lt;br /&gt;
        0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,&lt;br /&gt;
        0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,&lt;br /&gt;
        0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,&lt;br /&gt;
        0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,&lt;br /&gt;
        0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,&lt;br /&gt;
        0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,&lt;br /&gt;
        0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,&lt;br /&gt;
        0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,&lt;br /&gt;
        0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,&lt;br /&gt;
        0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,&lt;br /&gt;
        0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,&lt;br /&gt;
        0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,&lt;br /&gt;
        0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,&lt;br /&gt;
        0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,&lt;br /&gt;
        0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,&lt;br /&gt;
        0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,&lt;br /&gt;
        0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,&lt;br /&gt;
        0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,&lt;br /&gt;
        0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,&lt;br /&gt;
        0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,&lt;br /&gt;
        0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,&lt;br /&gt;
        0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,&lt;br /&gt;
        0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,&lt;br /&gt;
        0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,&lt;br /&gt;
        0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,&lt;br /&gt;
        0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    uint8_t temp;&lt;br /&gt;
    uint16_t crcw = 0xFFFF;&lt;br /&gt;
&lt;br /&gt;
    while (len--) {&lt;br /&gt;
        temp = *data++ ^ crcw;&lt;br /&gt;
        crcw &amp;gt;&amp;gt;= 8;&lt;br /&gt;
        crcw ^= crc_table[temp];&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return crcw;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Broadcast to read meter addr ===&lt;br /&gt;
&lt;br /&gt;
'''Send:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x00 0x03 0x0000 0x0001 0x85DB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Received:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0x01 0x03 0x02 0x0001 0x7984&lt;br /&gt;
0x17 0x03 0x02 0x0001 0x7777&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 库 ==&lt;br /&gt;
&lt;br /&gt;
* libmodbus: https://github.com/stephane/libmodbus&lt;br /&gt;
* FreeModbus: https://www.freemodbus.org     https://github.com/nucleron/freemodbus-v1.5.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 调试工具 ==&lt;br /&gt;
&lt;br /&gt;
* modpoll: 经典命令行工具，单次读写，没有交互模式&lt;br /&gt;
* mbpoll: modpoll 的开源替代&lt;br /&gt;
* QmodMaster: Windows GUI 工具，功能全，笨重&lt;br /&gt;
* pymodbus REPL: python 工具，需要写简单的代码&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
读一组寄存器：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ modpoll -m tcp -a 1 -r 100 -c 10 192.168.1.66&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/OpenGD77</id>
		<title>OpenGD77</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/OpenGD77"/>
				<updated>2026-04-03T02:29:56Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardware ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform !! MCU !! Baseband !! RF chip !! Display controller !! Non volatile memory !! GPS&lt;br /&gt;
|-&lt;br /&gt;
| MD-3x0 || STM32F405VG || HR-C5000 || SKY72310 || HX8302A || 25Q128FV SPI flash || JS-M710&lt;br /&gt;
|-&lt;br /&gt;
| MD-UV3x0 || STM32F405VG || HR-C6000 || AT1846S || HX8302A || 25Q128FV SPI flash || JS-H210&lt;br /&gt;
|-&lt;br /&gt;
| GDx || MK22FN512 || HR-C6000 || AT1846S || UC1701 || 25Q80BV SPI flash +&amp;lt;br&amp;gt;AT24C512 I2C EEPROM || -&lt;br /&gt;
|-&lt;br /&gt;
| HD1 || MK22FN512 || HR-C6000 || AT1846S || || 25Q80BV SPI flash +&amp;lt;br&amp;gt;AT24C512 I2C EEPROM || ST-26-U7L&lt;br /&gt;
|-&lt;br /&gt;
| MD-9600 || STM32F405VG || HR-C6000 || SKY72310 || ST7567 || 25Q128FV SPI flash || JS-M710&lt;br /&gt;
|-&lt;br /&gt;
| T-TWR Plus || ESP32-S3 || SA868S || AT1846S || SH1106 || optional microSD || L76K&lt;br /&gt;
|-&lt;br /&gt;
| CS7000-M17 || STM32F405VG || HR-C6000 || SKY72310 || HX8302A || 25Q128FV SPI flash || MC-1010-2RE&lt;br /&gt;
|-&lt;br /&gt;
| CS7000-M17 Plus || STM32H743VI || HR-C6000 || SKY72310 || HX8302A || 25Q128FV SPI flash || MC-1010-2RE&lt;br /&gt;
|-&lt;br /&gt;
| C62 || CSK6011B || - || BK4819 || ST7735R || PY25Q40HB SPI flash || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UV380 firmware ==&lt;br /&gt;
&lt;br /&gt;
* https://www.opengd77.com/archive/viewforum71f6.html?f=19&amp;amp;&lt;br /&gt;
&lt;br /&gt;
* [https://www.opengd77.com/downloads/releases/MDUV380_DM1701/R20240908/ stable version]&lt;br /&gt;
* [https://www.opengd77.com/archive/viewtopic2d06.html?f=19&amp;amp;t=5001&amp;amp; test version]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/LibreDMR/OpenGD77_UserGuide/blob/master/OpenGD77_User_Guide_CN.md OpenGD77 User Guide]&lt;br /&gt;
* [https://www.opengd77.com/downloads/releases/ OpenGD77 releases]&lt;br /&gt;
* [https://openrtx.org/#/hardware/hardware OpenRTX]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-04-02T09:14:43Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* FEL mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
* V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
* V861: 128MB DDR3, 1T NPU, C907x2, E907x1, 2025/11&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
参考设计使用 4 个电源：&lt;br /&gt;
* VCC_3V3&lt;br /&gt;
* VDD-SYS_0.9V&lt;br /&gt;
* VCC-DRAM_1.5V&lt;br /&gt;
* VCC-1V8 (Inner LDOA)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel &amp;amp; DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DTB 位于：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
&lt;br /&gt;
还有一个 v853 的可参考：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
复制到 linux-4.9/arch/arm/boot/dts/ 下，Makefile 对应 CONFIG_ARCH_SUN8IW21P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
prebuilt:&lt;br /&gt;
&lt;br /&gt;
  ./tina-v853/out/v851s/lizard/buildroot/buildroot/target&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/OpenGD77</id>
		<title>OpenGD77</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/OpenGD77"/>
				<updated>2026-04-01T02:09:25Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardware ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Platform !! MCU !! Baseband !! RF chip !! Display controller !! Non volatile memory !! GPS&lt;br /&gt;
|-&lt;br /&gt;
| MD-3x0 || STM32F405VG || HR-C5000 || SKY72310 || HX8302A || 25Q128FV SPI flash || JS-M710&lt;br /&gt;
|-&lt;br /&gt;
| MD-UV3x0 || STM32F405VG || HR-C6000 || AT1846S || HX8302A || 25Q128FV SPI flash || JS-H210&lt;br /&gt;
|-&lt;br /&gt;
| GDx || MK22FN512 || HR-C6000 || AT1846S || UC1701 || 25Q80BV SPI flash +&amp;lt;br&amp;gt;AT24C512 I2C EEPROM || -&lt;br /&gt;
|-&lt;br /&gt;
| HD1 || MK22FN512 || HR-C6000 || AT1846S || || 25Q80BV SPI flash +&amp;lt;br&amp;gt;AT24C512 I2C EEPROM || ST-26-U7L&lt;br /&gt;
|-&lt;br /&gt;
| MD-9600 || STM32F405VG || HR-C6000 || SKY72310 || ST7567 || 25Q128FV SPI flash || JS-M710&lt;br /&gt;
|-&lt;br /&gt;
| T-TWR Plus || ESP32-S3 || SA868S || AT1846S || SH1106 || optional microSD || L76K&lt;br /&gt;
|-&lt;br /&gt;
| CS7000-M17 || STM32F405VG || HR-C6000 || SKY72310 || HX8302A || 25Q128FV SPI flash || MC-1010-2RE&lt;br /&gt;
|-&lt;br /&gt;
| CS7000-M17 Plus || STM32H743VI || HR-C6000 || SKY72310 || HX8302A || 25Q128FV SPI flash || MC-1010-2RE&lt;br /&gt;
|-&lt;br /&gt;
| C62 || CSK6011B || - || BK4819 || ST7735R || PY25Q40HB SPI flash || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/LibreDMR/OpenGD77_UserGuide/blob/master/OpenGD77_User_Guide_CN.md OpenGD77 User Guide]&lt;br /&gt;
* [https://www.opengd77.com/downloads/releases/ OpenGD77 releases]&lt;br /&gt;
* [https://openrtx.org/#/hardware/hardware OpenRTX]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/OpenGD77</id>
		<title>OpenGD77</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/OpenGD77"/>
				<updated>2026-04-01T02:08:59Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：以“== Hardware ==  {| class=&amp;quot;wikitable&amp;quot; |+ 设备硬件配置表 |- ! Platform !! MCU !! Baseband !! RF chip !! Display controller !! Non volatile memory !! GPS |- | MD...”为内容创建页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardware ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 设备硬件配置表&lt;br /&gt;
|-&lt;br /&gt;
! Platform !! MCU !! Baseband !! RF chip !! Display controller !! Non volatile memory !! GPS&lt;br /&gt;
|-&lt;br /&gt;
| MD-3x0 || STM32F405VG || HR-C5000 || SKY72310 || HX8302A || 25Q128FV SPI flash || JS-M710&lt;br /&gt;
|-&lt;br /&gt;
| MD-UV3x0 || STM32F405VG || HR-C6000 || AT1846S || HX8302A || 25Q128FV SPI flash || JS-H210&lt;br /&gt;
|-&lt;br /&gt;
| GDx || MK22FN512 || HR-C6000 || AT1846S || UC1701 || 25Q80BV SPI flash +&amp;lt;br&amp;gt;AT24C512 I2C EEPROM || -&lt;br /&gt;
|-&lt;br /&gt;
| HD1 || MK22FN512 || HR-C6000 || AT1846S || || 25Q80BV SPI flash +&amp;lt;br&amp;gt;AT24C512 I2C EEPROM || ST-26-U7L&lt;br /&gt;
|-&lt;br /&gt;
| MD-9600 || STM32F405VG || HR-C6000 || SKY72310 || ST7567 || 25Q128FV SPI flash || JS-M710&lt;br /&gt;
|-&lt;br /&gt;
| T-TWR Plus || ESP32-S3 || SA868S || AT1846S || SH1106 || optional microSD || L76K&lt;br /&gt;
|-&lt;br /&gt;
| CS7000-M17 || STM32F405VG || HR-C6000 || SKY72310 || HX8302A || 25Q128FV SPI flash || MC-1010-2RE&lt;br /&gt;
|-&lt;br /&gt;
| CS7000-M17 Plus || STM32H743VI || HR-C6000 || SKY72310 || HX8302A || 25Q128FV SPI flash || MC-1010-2RE&lt;br /&gt;
|-&lt;br /&gt;
| C62 || CSK6011B || - || BK4819 || ST7735R || PY25Q40HB SPI flash || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/LibreDMR/OpenGD77_UserGuide/blob/master/OpenGD77_User_Guide_CN.md OpenGD77 User Guide]&lt;br /&gt;
* [https://www.opengd77.com/downloads/releases/ OpenGD77 releases]&lt;br /&gt;
* [https://openrtx.org/#/hardware/hardware OpenRTX]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/TH-D72_%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B</id>
		<title>TH-D72 快速上手</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/TH-D72_%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B"/>
				<updated>2026-03-31T09:05:41Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 检查GPS是否定位 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== APRS 初始设置 ==&lt;br /&gt;
&lt;br /&gt;
文 BD6CR/4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全新机器，打开电源键会显示A波段144.000，B波段430.000，上排左侧有一个小H表示高功率。如果不是这个状态，那就进行一次复位：&lt;br /&gt;
&lt;br /&gt;
关机状态下按住 F键 再开机，上排会出现Reset，下排是VFO Reset闪动&lt;br /&gt;
&lt;br /&gt;
按向下键，切换成Full Reset闪动，然后按向右键（OK键）2次&lt;br /&gt;
&lt;br /&gt;
屏幕出现 RESETTING!&lt;br /&gt;
&lt;br /&gt;
然后就会到上述全新机器的状态&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 切换步进 ===&lt;br /&gt;
&lt;br /&gt;
切换步进为10kHz&lt;br /&gt;
&lt;br /&gt;
按一下键盘右侧 F键，&lt;br /&gt;
&lt;br /&gt;
再按一下键盘下面的 ENT键，&lt;br /&gt;
&lt;br /&gt;
会出现12.5kHz闪动，逆时针转动频率旋钮切换成 10kHz&lt;br /&gt;
&lt;br /&gt;
然后按向右键（OK键），回到频率显示窗口&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 打开GPS ===&lt;br /&gt;
&lt;br /&gt;
按一下 F键，然后按一下右上方的 MARK键&lt;br /&gt;
&lt;br /&gt;
打开成功后，屏幕右上角显示iGPS小字&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 打开 APRS12 模式 ===&lt;br /&gt;
&lt;br /&gt;
按一下 MARK键 右边的 TNC键 一次，屏幕会出现Opening TNC字样，然后在频率显示的上排中央出现APRS12小字，在144.640的右边有一个D小字，表示A波段是数据波段&lt;br /&gt;
&lt;br /&gt;
如果你再次按 TNC键，会切换到一般分组通信用的 PACKET12模式。如果你不小心切换过去了，只需要再按两次TNC键即可切换回APRS12模式&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 设置自己的呼号 ===&lt;br /&gt;
&lt;br /&gt;
按一下键盘右上的 MENU键，出现主菜单，分别有RADIO、GPS、APRS和SKY四项，用向下键将箭头指向APRS&lt;br /&gt;
&lt;br /&gt;
然后用向右键（OK键）选择，进入Basic Set菜单，右侧有小字30-，其中0闪动&lt;br /&gt;
&lt;br /&gt;
再按一次向右键（OK键），箭头指向My Callsign&lt;br /&gt;
&lt;br /&gt;
再按一次向右键（OK键）选择，进入呼号编辑，默认是NOCALL&lt;br /&gt;
&lt;br /&gt;
A/B键是将光标位置的字符删除。左右方向键可以移动光标。如果要输入横杠，用ENT键。&lt;br /&gt;
&lt;br /&gt;
比如我已经输入了BD6CR-7，-7是一个习惯，表示是APRS手持机。然后按向右键（OK键）两次，箭头位于My Callsign处，然后按向左键将箭头退回到Basic Set&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 设置信标发送方法和时间间隔 ===&lt;br /&gt;
&lt;br /&gt;
通过上下键或者旋动频率旋钮，将菜单切换到TX Beacon（即菜单3D-）&lt;br /&gt;
&lt;br /&gt;
按向右键（OK键）两次，开始设置信标发送方法Method，Manual闪动，通过旋动频率旋钮切换成Auto，表示自动定时发送模式&lt;br /&gt;
&lt;br /&gt;
然后按向右键（OK键）一次确认，箭头指向Method。信标发送的默认的时间间隔是1分钟，一般挺合适的，如果你希望更改间隔，可以用向下键进入Initial Interval更改，操作方法类似&lt;br /&gt;
&lt;br /&gt;
假定不需要更改，那么按向左键（ESC键）三次退回到频率显示模式&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 打开信标 ===&lt;br /&gt;
&lt;br /&gt;
按一下BCON键，完成后频率显示的上排会出现BCON小字，表示打开了信标发送&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 检查GPS是否定位 ===&lt;br /&gt;
&lt;br /&gt;
到现在为止，恭喜你！你已经完成了所有的APRS设置。可是为什么还不能发送APRS信标呢？你可以按一下POS键检查一下GPS是否定位。&lt;br /&gt;
&lt;br /&gt;
如果是Finding GPS satellites..，表示还没有定位，自然也就没办法发送信标了。这时候，你可以带着你的D72到户外开阔的地方，初始的定位需要一段时间，不过D72的内置GPS灵敏度还不错，很快就能显示经纬度坐标，然后你只需要再按一下POS键回到频率显示模式。&lt;br /&gt;
&lt;br /&gt;
如果你的本地有许多APRS的活动，你也许已经收到了别人的APRS信号。每次收到的时候，频率显示会被中断，显示对方的呼号等信息。如果你期望查看这些收到的电台，你可以按LIST键。如果你收到了消息，你可以按MSG键查看。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/ADS-B</id>
		<title>ADS-B</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/ADS-B"/>
				<updated>2026-03-31T04:31:42Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Reference */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
http://www.sprut.de/electronic/pic/projekte/adsb/adsb_en.html&lt;br /&gt;
&lt;br /&gt;
[https://wenku.baidu.com/view/b60b481fa76e58fafab003f1.html ADS-B for Dummies]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTL SDR ==&lt;br /&gt;
&lt;br /&gt;
[https://www.rtl-sdr.com/rtl-sdr-quick-start-guide/ RTL SDR Quick Start]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== zadig ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/pbatard/libwdi/releases/download/b721/zadig-2.4.exe&lt;br /&gt;
&lt;br /&gt;
Options ---&amp;gt; List All Devices, 选择 &amp;quot;Bulk-In, Interface (Interface 0)&amp;quot;，USB ID 为：0BDA:2838，此为 RTL SDR 2832U 设备&lt;br /&gt;
&lt;br /&gt;
zadig 用来将该设备驱动替换为 WinUSB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDR # ===&lt;br /&gt;
&lt;br /&gt;
通用工具，可查看频谱&lt;br /&gt;
&lt;br /&gt;
* https://sdrsharp.com/download/&lt;br /&gt;
&lt;br /&gt;
2019-12-8 的版本里面带的 RTLSDR　驱动有问题，需用下面的替换之&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RelWithDebInfo ===&lt;br /&gt;
&lt;br /&gt;
替换新版 SDR # 中有问题的 rtlsdr.dll&lt;br /&gt;
&lt;br /&gt;
http://sdr.osmocom.org/trac/raw-attachment/wiki/rtl-sdr/&lt;br /&gt;
&lt;br /&gt;
解压后，将 RelWithDebInfo.zip\rtl-sdr-release\x32\  下的 rtlsdr.dll 和 libusb-1.0.dll  复制到 SDR# 的目录下。&lt;br /&gt;
&lt;br /&gt;
不论你的 window 是不是 32 位，都是这个。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dump1090 ===&lt;br /&gt;
&lt;br /&gt;
RTL SDR 解码 ADS-B 主力工具&lt;br /&gt;
&lt;br /&gt;
* http://www.github.com/antirez/dump1090&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 天线 ==&lt;br /&gt;
&lt;br /&gt;
http://antirez.com/news/46&lt;br /&gt;
&lt;br /&gt;
http://www.lll.lu/~edward/edward/adsb/antenna/ADSBantenna.html&lt;br /&gt;
&lt;br /&gt;
http://modesbeast.com/pix/adsb-ant-drawing.gif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PC ==&lt;br /&gt;
&lt;br /&gt;
工具：&lt;br /&gt;
&lt;br /&gt;
* [https://www.rtl-sdr.com/ads-b-decoder-dump1090-now-available-windows/ ADS-B DECODER DUMP1090 ON WINDOWS]&lt;br /&gt;
* [https://github.com/antirez/dump1090 dump1090]&lt;br /&gt;
* rtl-sdr 笔记：http://ailin.phychembio.com/miscellany/967/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
利用放在室內的天线和放大器，配合 RTL1090，將 1090MHz 的信号解码，然后利用 TCP 链接，将数据传入 COAA PlanePlotter 显示&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 树莓派 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install git  cmake libusb-1.0-0-dev build-essential&lt;br /&gt;
$ git clone git://git.osmocom.org/rtl-sdr.git&lt;br /&gt;
$ mkdir -p rtl-sdr/build&lt;br /&gt;
$ cd rtl-sdr/build&lt;br /&gt;
$ cmake ../&lt;br /&gt;
$ make&lt;br /&gt;
$ sudo make install&lt;br /&gt;
$ sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
copy the udev rules file into  the etc/udev/rules.d&lt;br /&gt;
&lt;br /&gt;
# test commands&lt;br /&gt;
$ lsusb&lt;br /&gt;
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.&lt;br /&gt;
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.&lt;br /&gt;
Bus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T&lt;br /&gt;
$ rtl_eeprom&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  ezcap USB 2.0 DVB-T/DAB/FM dongle&lt;br /&gt;
&lt;br /&gt;
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
&lt;br /&gt;
Current configuration:&lt;br /&gt;
__________________________________________&lt;br /&gt;
Vendor ID:              0x0bda&lt;br /&gt;
Product ID:             0x2838&lt;br /&gt;
Manufacturer:           Realtek&lt;br /&gt;
Product:                RTL2838UHIDIR&lt;br /&gt;
Serial number:          00000013&lt;br /&gt;
Serial number enabled:  yes&lt;br /&gt;
IR endpoint enabled:    yes&lt;br /&gt;
Remote wakeup enabled:  no&lt;br /&gt;
__________________________________________&lt;br /&gt;
&lt;br /&gt;
$ rtl_test -t&lt;br /&gt;
$ rtl_tcp -a 10.0.1.50&lt;br /&gt;
&lt;br /&gt;
$ git clone https://github.com/antirez/dump1090&lt;br /&gt;
$ cd dump1090 &amp;amp;&amp;amp; make&lt;br /&gt;
$ ./dump1090  --interactive --net --net-ro-port 31001 1&amp;gt;&amp;amp;2 &amp;gt; /dev/null &amp;amp;        # access http://localhost:8080&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* http://sdrsharp.com/index.php/a-simple-and-cheap-ads-b-receiver-using-rtl-sdr&lt;br /&gt;
* https://github.com/antirez/dump1090/blob/master/dump1090.c&lt;br /&gt;
* http://www.satsignal.eu/raspberry-pi/dump1090.html&lt;br /&gt;
* https://github.com/keenerd/rtl-sdr/blob/master/src/rtl_adsb.c&lt;br /&gt;
* http://rtlsdr.org/softwarelinux&lt;br /&gt;
* http://ferrancasanovas.wordpress.com/2013/09/26/dump1090-installation/&lt;br /&gt;
* http://www.ads-b.com/slideshow.htm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/APRS</id>
		<title>APRS</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/APRS"/>
				<updated>2026-03-31T04:30:29Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* HF APRS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Modem ==&lt;br /&gt;
&lt;br /&gt;
* MicroModem: http://unsigned.io/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decode APRS with RTL SDR ==&lt;br /&gt;
&lt;br /&gt;
RTL2832U&lt;br /&gt;
&lt;br /&gt;
* sdr windows driver: http://rtlsdr.org/softwarewindows&lt;br /&gt;
* sdr-radio V2: http://v2.sdr-radio.com/Support/RTLSDRs.aspx&lt;br /&gt;
* AGW Packet Engine http://www.sv2agw.com/downloads/default.htm&lt;br /&gt;
* AGWTracker&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ rtl_fm -f 144640000 -s 22050 - | multimon -a AFSK1200 -t raw /dev/stdin&lt;br /&gt;
multimod  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA&lt;br /&gt;
available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS AFSK1200 AFSK2400 AFSK2400_2 HAPN4800 FSK9600 DTMF ZVEI SCOPE&lt;br /&gt;
Enabled demodulators: AFSK1200&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000013&lt;br /&gt;
&lt;br /&gt;
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Oversampling input by: 46x.&lt;br /&gt;
Oversampling output by: 1x.&lt;br /&gt;
Buffer size: 8.08ms&lt;br /&gt;
Tuned to 144893575 Hz.&lt;br /&gt;
Sampling at 1014300 Hz.&lt;br /&gt;
Output at 22050 Hz.&lt;br /&gt;
Exact sample rate is: 1014300.020041 Hz&lt;br /&gt;
Tuner gain set to automatic.&lt;br /&gt;
AFSK1200: fm BH1RBH-7 to SYUYT9-0 via WIDE1-1,WIDE2-1 UIv pid=F0&lt;br /&gt;
`,6gl-+K\&amp;gt;=&lt;br /&gt;
AFSK1200: fm BH1RBH-7 to SYUYT7-0 via WIDE1-1,WIDE2-1 UIv pid=F0&lt;br /&gt;
`,6glA,K\&amp;gt;=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $  rtl_fm -f 144640000 -s 22050 - | multimon-ng -a AFSK1200 -A -t raw /dev/stdin&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000013&lt;br /&gt;
&lt;br /&gt;
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle&lt;br /&gt;
multimon-ng  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA&lt;br /&gt;
             (C) 2012/2013 by Elias Oenal&lt;br /&gt;
available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800&lt;br /&gt;
 FSK9600 DTMF ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI EEA EIA CCIR SCOPE&lt;br /&gt;
Enabled demodulators: AFSK1200&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Oversampling input by: 46x.&lt;br /&gt;
Oversampling output by: 1x.&lt;br /&gt;
Buffer size: 8.08ms&lt;br /&gt;
Tuned to 144893575 Hz.&lt;br /&gt;
Sampling at 1014300 Hz.&lt;br /&gt;
Output at 22050 Hz.&lt;br /&gt;
Exact sample rate is: 1014300.020041 Hz&lt;br /&gt;
Tuner gain set to automatic.&lt;br /&gt;
APRS: BH1RBH-7&amp;gt;SYUYT9,WIDE1-1,WIDE2-1:',6fl##K\&amp;gt;=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SDR Gateway:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/pymultimonaprs $ rtl_fm -f 144640000 -s 22050 -p 0 -g 42 - | multimon-ng -a AFSK1200 -A -t raw /dev/stdin&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
multimon-ng  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA&lt;br /&gt;
             (C) 2012/2013 by Elias Oenal&lt;br /&gt;
available demodulators:  0:  Realtek, RTL2838UHIDIR, SN: 00000013&lt;br /&gt;
&lt;br /&gt;
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle&lt;br /&gt;
 POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTR SCOPE&lt;br /&gt;
Enabled demodulators: AFSK1200&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Oversampling input by: 46x.&lt;br /&gt;
Oversampling output by: 1x.&lt;br /&gt;
Buffer size: 8.08ms&lt;br /&gt;
Tuned to 144893575 Hz.&lt;br /&gt;
Sampling at 1014300 Hz.&lt;br /&gt;
Output at 22050 Hz.&lt;br /&gt;
Exact sample rate is: 1014300.020041 Hz&lt;br /&gt;
Tuner gain set to 42.00 dB.&lt;br /&gt;
APRS: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1:'vX K\&amp;gt;EPRS=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/pymultimonaprs $ pymultimonaprs -v&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: connecting... 192.168.1.200:14580&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: connected&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: # aprsc 2.0.3-g898e4b5&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: login BH1RBH-1 (PyMultimonAPRS 0.8.4)&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: # logresp BH1RBH-1 verified, server COMCAT&lt;br /&gt;
[2013-05-26 00:26:44]    DEBUG: sending: BH1RBH-1&amp;gt;APRS,TCPIP*:=3959.40N/11627.00&lt;br /&gt;
[2013-05-26 00:26:44]    DEBUG: sending: BH1RBH-1&amp;gt;APRS,TCPIP*:&amp;gt;Running on Raspberry Pi&lt;br /&gt;
[2013-05-26 00:26:49]    DEBUG: sending: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1&lt;br /&gt;
[2013-05-26 00:27:50]    DEBUG: sending: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:'vX K\&amp;gt;EPRS=&lt;br /&gt;
&lt;br /&gt;
[2013-05-26 00:34:40]    DEBUG: sending: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAR,BH1RBH-1::EPRS     :test{0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-05-23 14:43:17 CST: BH1RBH-7&amp;gt;SYUYQ1,WIDE1-1,WIDE2-1,qAS,BY1WJ:`,7ml*&amp;lt;K\&amp;gt;=&lt;br /&gt;
2013-05-23 14:52:01 CST: BH1RBH-7&amp;gt;SYUYQ1,WIDE1-1,WIDE2-1,qAS,BY1WJ:',7ll,'K\&amp;gt;=&lt;br /&gt;
2013-05-23 14:53:12 CST: BH1RBH-7&amp;gt;SYUYQ1,WIDE1-1,WIDE2-1,qAS,BY1WJ:`,7ll&amp;quot;-K\&amp;gt;=&lt;br /&gt;
2013-05-23 14:53:54 CST: BH1RBH-7&amp;gt;SYUYQ0,WIDE1-1,WIDE2-1,qAS,BY1WJ:',7ml&amp;quot;-K\&amp;gt;=&lt;br /&gt;
2013-05-23 14:54:56 CST: BH1RBH-7&amp;gt;SYUYQ0,WIDE1-1,WIDE2-1,qAS,BY1WJ:',7ll&amp;quot;-K\&amp;gt;=&lt;br /&gt;
2013-05-26 00:26:49 CST: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;K\&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
2013-05-26 00:27:50 CST: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;K\&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 结构 ==&lt;br /&gt;
&lt;br /&gt;
Tier 2 Network: http://www.aprs2.net/&lt;br /&gt;
&lt;br /&gt;
Tier 2 Network Server Monitor: http://www.aprs2.net/mon.htm&lt;br /&gt;
&lt;br /&gt;
Tier 2 Server List: http://www.aprs2.net/APRServe2.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 网关 (iGate) ==&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* aprsg, aprx, or aprs4r in Linux&lt;br /&gt;
&lt;br /&gt;
* APRSIS32 in Windows&lt;br /&gt;
&lt;br /&gt;
http://www.g4ilo.com/usblink.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
Intro: http://www.aprs-is.net&lt;br /&gt;
&lt;br /&gt;
* [http://www.aprs-is.net/javAPRSSrvr/ javAPRSSrv]r for all platform &lt;br /&gt;
&lt;br /&gt;
* [http://he.fi/aprsc/ aprsc] for UNIX/Linux &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 协议 ==&lt;br /&gt;
&lt;br /&gt;
=== AFSK ===&lt;br /&gt;
&lt;br /&gt;
音频频移键控，物理层协议。用两个音频音调表示 0 和 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== AX.25 ===&lt;br /&gt;
&lt;br /&gt;
数据链路层协议&lt;br /&gt;
&lt;br /&gt;
* http://www.tapr.org/pub_ax25.html&lt;br /&gt;
* http://www.tapr.org/pdf/AX25.2.2.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* http://www.aprs.org/aprs12.html&lt;br /&gt;
* RAW data: http://aprs.fi/?c=raw&lt;br /&gt;
* http://wsanders.net/aprsunproto.html&lt;br /&gt;
* 静态地图 http://aprs.fi/static/BY1WJ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 向 APRS-IS 直接推送消息 ===&lt;br /&gt;
&lt;br /&gt;
1. 连接服务器&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc 66.109.111.25 14580&lt;br /&gt;
# aprsc 2.0.0-gf5e3f21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. 登陆&lt;br /&gt;
&lt;br /&gt;
直接向 APRS 网络推送消息，需要身份验证，需要业余无线电呼号和 passcode。passcode 的申请，请写一个申请 email 给 pete@ae5pl.net&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc 66.109.111.25 14580&lt;br /&gt;
# aprsc 2.0.0-gf5e3f21&lt;br /&gt;
user YOUR_CALL_SIGNE pass YOUR_PASSCODE -1 ver &amp;quot;manual login&amp;quot;.net&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
成功后会看到服务器返回：&lt;br /&gt;
&lt;br /&gt;
  # logresp YOUR_CALL_SIGNE verified, server FIFTH&lt;br /&gt;
&lt;br /&gt;
3. 推送消息&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
YOUR_CALL_SIGNE&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EMAIL     :aprs-go@gmail.com testing via aprs{1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
很快你就能在推送消息的服务器监控页里： http://66.109.111.25:14501 看到有你呼号的那一行的 'Packets Rx' 列，记数加了一个&lt;br /&gt;
&lt;br /&gt;
可以在这个地址直接查看：http://aprs.fi/?c=raw&amp;amp;call=YOUR_CALL_SIGNE 刚刚推送的消息&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAW Data 分析 ===&lt;br /&gt;
&lt;br /&gt;
APRSdroid 发送：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-04-15 07:20:39 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2GYOR::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-15 07:22:09 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2GYOR::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-15 07:43:11 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2GYOR:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-15 07:43:11 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2GYOR::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-15 23:06:00 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-15 23:06:00 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-15 23:06:00 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM::SMS      :help.eprs@gmail.com testing msg {1&lt;br /&gt;
2013-04-15 23:08:58 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-15 23:08:58 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM::SMS      :help.eprs@gmail.com testing msg {1&lt;br /&gt;
2013-04-15 23:08:58 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM::EPRS     :tesing msg msg{1&lt;br /&gt;
2013-04-16 06:45:48 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-16 06:45:48 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-16 06:45:48 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EPRS     :tesing msg msg{1&lt;br /&gt;
2013-04-17 02:42:03 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-17 02:42:03 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EPRS     :tesing msg msg{1&lt;br /&gt;
2013-04-17 03:04:20 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EPRS     :tesing messages{1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
手持台发送：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-05-22 23:52:01 PDT: BH1RBH-7&amp;gt;SYUYQ1,WIDE1-1,WIDE2-1,qAS,BY1WJ:',7ll,'K\&amp;gt;=&lt;br /&gt;
2013-05-25 09:26:49 PDT: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;K\&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
2013-05-25 09:38:42 PDT: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAR,BH1RBH-1::EPRS     :test{0&lt;br /&gt;
2013-05-25 19:57:51 PDT: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAR,BH1RBH-1::EMAIL    :liuhelga@gmail.com eprs testing msg via aprs{3&lt;br /&gt;
2013-05-25 20:33:32 PDT: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAR,BH1RBH-1::BH1DCY-9 :73{5&lt;br /&gt;
2013-05-26 19:03:32 PDT: BH1RBH-7&amp;gt;3YUYZL,WIDE1-1,WIDE2-1,qAS,BY1WJ:`,6tl?XK\&amp;gt;EPRS=&lt;br /&gt;
2013-05-26 19:04:21 PDT: BH1RBH-7&amp;gt;3YUYZL,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:`,6zlR}K\&amp;gt;EPRS=&lt;br /&gt;
2013-05-28 23:26:08 PDT: BH1RBH-7&amp;gt;3YUYQ1,APRSAT,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:`,7ll&amp;quot;H[/&amp;gt;EPRS=&lt;br /&gt;
2013-05-28 23:27:55 PDT: BH1RBH-7&amp;gt;3YUYQ1,APRSAT,WIDE2-1,qAR,BH1RBH-1:`,7ml!t[/&amp;gt;EPRS=&lt;br /&gt;
2013-05-29 18:36:08 PDT: BH1RBH-7&amp;gt;3YUYS6,WIDE1-1,qAR,BH1RBH-1:`,6ulRg[/&amp;gt;EPRS=&lt;br /&gt;
2013-05-29 20:40:40 PDT: BH1RBH-7&amp;gt;0PPPPP,BH1RBH-1,WIDE2-1,qAS,BY1WJ:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;[/&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
2013-05-29 20:41:59 PDT: BH1RBH-7&amp;gt;0PPPPP,BH1RBH-1,qAS,BY1WJ:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;[/&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
2013-05-30 20:58:33 PDT: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAS,BY1WJ::BH1RBH-7 :home alarm!{9&lt;br /&gt;
2013-05-30 21:18:59 PDT: BH1RBH-7&amp;gt;3YUYQ1,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:`,7ml&amp;quot;q[/&amp;gt;EPRS=&lt;br /&gt;
2013-05-30 21:42:38 PDT: BH1RBH-7&amp;gt;3YUYQ0,WIDE1-1,WIDE2-1,qAS,BY1WJ:`,7ml5![/&amp;gt;EPRS=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MIC-E ===&lt;br /&gt;
&lt;br /&gt;
http://www.tapr.org/kits_mic-e.html#message_format&lt;br /&gt;
&lt;br /&gt;
https://github.com/hessu/aprsc/blob/master/src/parse_aprs.c [parse_aprs_mice]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== APRS PATH ===&lt;br /&gt;
&lt;br /&gt;
http://www.kd5om.com/aprspaths.htm&lt;br /&gt;
&lt;br /&gt;
http://wa8lmf.net/DigiPaths/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== APRS Satellites ==&lt;br /&gt;
&lt;br /&gt;
Operational: GO32, semi: PCSAT1, Echo, ISS2, decayed: PCSAT2, ANDE, RAFT, and in-work, P-sat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://aprs.org/astars/email.txt SENDING EMAIL via the APRS Capable Satellites]&lt;br /&gt;
&lt;br /&gt;
* [http://www.aprs.org/astars.html ASTARS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
APRS on ISS: http://www.ariss.net/index.cgi?absolute=1&lt;br /&gt;
&lt;br /&gt;
APRS on NO-44: http://www.findu.com/cgi-bin/pcsat.cgi?absolute=1&lt;br /&gt;
&lt;br /&gt;
ISS/APRS FAQ: http://www.aprs.org/iss-faq.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HF APRS ==&lt;br /&gt;
&lt;br /&gt;
* SDR-4: http://www.crosscountrywireless.net/sdr-4.htm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/APRS</id>
		<title>APRS</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/APRS"/>
				<updated>2026-03-31T04:29:54Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* 协议 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Modem ==&lt;br /&gt;
&lt;br /&gt;
* MicroModem: http://unsigned.io/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decode APRS with RTL SDR ==&lt;br /&gt;
&lt;br /&gt;
RTL2832U&lt;br /&gt;
&lt;br /&gt;
* sdr windows driver: http://rtlsdr.org/softwarewindows&lt;br /&gt;
* sdr-radio V2: http://v2.sdr-radio.com/Support/RTLSDRs.aspx&lt;br /&gt;
* AGW Packet Engine http://www.sv2agw.com/downloads/default.htm&lt;br /&gt;
* AGWTracker&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $ rtl_fm -f 144640000 -s 22050 - | multimon -a AFSK1200 -t raw /dev/stdin&lt;br /&gt;
multimod  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA&lt;br /&gt;
available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS AFSK1200 AFSK2400 AFSK2400_2 HAPN4800 FSK9600 DTMF ZVEI SCOPE&lt;br /&gt;
Enabled demodulators: AFSK1200&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000013&lt;br /&gt;
&lt;br /&gt;
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Oversampling input by: 46x.&lt;br /&gt;
Oversampling output by: 1x.&lt;br /&gt;
Buffer size: 8.08ms&lt;br /&gt;
Tuned to 144893575 Hz.&lt;br /&gt;
Sampling at 1014300 Hz.&lt;br /&gt;
Output at 22050 Hz.&lt;br /&gt;
Exact sample rate is: 1014300.020041 Hz&lt;br /&gt;
Tuner gain set to automatic.&lt;br /&gt;
AFSK1200: fm BH1RBH-7 to SYUYT9-0 via WIDE1-1,WIDE2-1 UIv pid=F0&lt;br /&gt;
`,6gl-+K\&amp;gt;=&lt;br /&gt;
AFSK1200: fm BH1RBH-7 to SYUYT7-0 via WIDE1-1,WIDE2-1 UIv pid=F0&lt;br /&gt;
`,6glA,K\&amp;gt;=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~ $  rtl_fm -f 144640000 -s 22050 - | multimon-ng -a AFSK1200 -A -t raw /dev/stdin&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
  0:  Realtek, RTL2838UHIDIR, SN: 00000013&lt;br /&gt;
&lt;br /&gt;
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle&lt;br /&gt;
multimon-ng  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA&lt;br /&gt;
             (C) 2012/2013 by Elias Oenal&lt;br /&gt;
available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800&lt;br /&gt;
 FSK9600 DTMF ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI EEA EIA CCIR SCOPE&lt;br /&gt;
Enabled demodulators: AFSK1200&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Oversampling input by: 46x.&lt;br /&gt;
Oversampling output by: 1x.&lt;br /&gt;
Buffer size: 8.08ms&lt;br /&gt;
Tuned to 144893575 Hz.&lt;br /&gt;
Sampling at 1014300 Hz.&lt;br /&gt;
Output at 22050 Hz.&lt;br /&gt;
Exact sample rate is: 1014300.020041 Hz&lt;br /&gt;
Tuner gain set to automatic.&lt;br /&gt;
APRS: BH1RBH-7&amp;gt;SYUYT9,WIDE1-1,WIDE2-1:',6fl##K\&amp;gt;=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SDR Gateway:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/pymultimonaprs $ rtl_fm -f 144640000 -s 22050 -p 0 -g 42 - | multimon-ng -a AFSK1200 -A -t raw /dev/stdin&lt;br /&gt;
Found 1 device(s):&lt;br /&gt;
multimon-ng  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA&lt;br /&gt;
             (C) 2012/2013 by Elias Oenal&lt;br /&gt;
available demodulators:  0:  Realtek, RTL2838UHIDIR, SN: 00000013&lt;br /&gt;
&lt;br /&gt;
Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle&lt;br /&gt;
 POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTR SCOPE&lt;br /&gt;
Enabled demodulators: AFSK1200&lt;br /&gt;
Found Rafael Micro R820T tuner&lt;br /&gt;
Oversampling input by: 46x.&lt;br /&gt;
Oversampling output by: 1x.&lt;br /&gt;
Buffer size: 8.08ms&lt;br /&gt;
Tuned to 144893575 Hz.&lt;br /&gt;
Sampling at 1014300 Hz.&lt;br /&gt;
Output at 22050 Hz.&lt;br /&gt;
Exact sample rate is: 1014300.020041 Hz&lt;br /&gt;
Tuner gain set to 42.00 dB.&lt;br /&gt;
APRS: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1:'vX K\&amp;gt;EPRS=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pi@raspberrypi ~/pymultimonaprs $ pymultimonaprs -v&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: connecting... 192.168.1.200:14580&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: connected&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: # aprsc 2.0.3-g898e4b5&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: login BH1RBH-1 (PyMultimonAPRS 0.8.4)&lt;br /&gt;
[2013-05-26 00:26:42]     INFO: # logresp BH1RBH-1 verified, server COMCAT&lt;br /&gt;
[2013-05-26 00:26:44]    DEBUG: sending: BH1RBH-1&amp;gt;APRS,TCPIP*:=3959.40N/11627.00&lt;br /&gt;
[2013-05-26 00:26:44]    DEBUG: sending: BH1RBH-1&amp;gt;APRS,TCPIP*:&amp;gt;Running on Raspberry Pi&lt;br /&gt;
[2013-05-26 00:26:49]    DEBUG: sending: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1&lt;br /&gt;
[2013-05-26 00:27:50]    DEBUG: sending: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:'vX K\&amp;gt;EPRS=&lt;br /&gt;
&lt;br /&gt;
[2013-05-26 00:34:40]    DEBUG: sending: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAR,BH1RBH-1::EPRS     :test{0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-05-23 14:43:17 CST: BH1RBH-7&amp;gt;SYUYQ1,WIDE1-1,WIDE2-1,qAS,BY1WJ:`,7ml*&amp;lt;K\&amp;gt;=&lt;br /&gt;
2013-05-23 14:52:01 CST: BH1RBH-7&amp;gt;SYUYQ1,WIDE1-1,WIDE2-1,qAS,BY1WJ:',7ll,'K\&amp;gt;=&lt;br /&gt;
2013-05-23 14:53:12 CST: BH1RBH-7&amp;gt;SYUYQ1,WIDE1-1,WIDE2-1,qAS,BY1WJ:`,7ll&amp;quot;-K\&amp;gt;=&lt;br /&gt;
2013-05-23 14:53:54 CST: BH1RBH-7&amp;gt;SYUYQ0,WIDE1-1,WIDE2-1,qAS,BY1WJ:',7ml&amp;quot;-K\&amp;gt;=&lt;br /&gt;
2013-05-23 14:54:56 CST: BH1RBH-7&amp;gt;SYUYQ0,WIDE1-1,WIDE2-1,qAS,BY1WJ:',7ll&amp;quot;-K\&amp;gt;=&lt;br /&gt;
2013-05-26 00:26:49 CST: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;K\&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
2013-05-26 00:27:50 CST: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;K\&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 结构 ==&lt;br /&gt;
&lt;br /&gt;
Tier 2 Network: http://www.aprs2.net/&lt;br /&gt;
&lt;br /&gt;
Tier 2 Network Server Monitor: http://www.aprs2.net/mon.htm&lt;br /&gt;
&lt;br /&gt;
Tier 2 Server List: http://www.aprs2.net/APRServe2.txt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 网关 (iGate) ==&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* aprsg, aprx, or aprs4r in Linux&lt;br /&gt;
&lt;br /&gt;
* APRSIS32 in Windows&lt;br /&gt;
&lt;br /&gt;
http://www.g4ilo.com/usblink.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
Intro: http://www.aprs-is.net&lt;br /&gt;
&lt;br /&gt;
* [http://www.aprs-is.net/javAPRSSrvr/ javAPRSSrv]r for all platform &lt;br /&gt;
&lt;br /&gt;
* [http://he.fi/aprsc/ aprsc] for UNIX/Linux &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 协议 ==&lt;br /&gt;
&lt;br /&gt;
=== AFSK ===&lt;br /&gt;
&lt;br /&gt;
音频频移键控，物理层协议。用两个音频音调表示 0 和 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== AX.25 ===&lt;br /&gt;
&lt;br /&gt;
数据链路层协议&lt;br /&gt;
&lt;br /&gt;
* http://www.tapr.org/pub_ax25.html&lt;br /&gt;
* http://www.tapr.org/pdf/AX25.2.2.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* http://www.aprs.org/aprs12.html&lt;br /&gt;
* RAW data: http://aprs.fi/?c=raw&lt;br /&gt;
* http://wsanders.net/aprsunproto.html&lt;br /&gt;
* 静态地图 http://aprs.fi/static/BY1WJ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 向 APRS-IS 直接推送消息 ===&lt;br /&gt;
&lt;br /&gt;
1. 连接服务器&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc 66.109.111.25 14580&lt;br /&gt;
# aprsc 2.0.0-gf5e3f21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. 登陆&lt;br /&gt;
&lt;br /&gt;
直接向 APRS 网络推送消息，需要身份验证，需要业余无线电呼号和 passcode。passcode 的申请，请写一个申请 email 给 pete@ae5pl.net&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc 66.109.111.25 14580&lt;br /&gt;
# aprsc 2.0.0-gf5e3f21&lt;br /&gt;
user YOUR_CALL_SIGNE pass YOUR_PASSCODE -1 ver &amp;quot;manual login&amp;quot;.net&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
成功后会看到服务器返回：&lt;br /&gt;
&lt;br /&gt;
  # logresp YOUR_CALL_SIGNE verified, server FIFTH&lt;br /&gt;
&lt;br /&gt;
3. 推送消息&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
YOUR_CALL_SIGNE&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EMAIL     :aprs-go@gmail.com testing via aprs{1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
很快你就能在推送消息的服务器监控页里： http://66.109.111.25:14501 看到有你呼号的那一行的 'Packets Rx' 列，记数加了一个&lt;br /&gt;
&lt;br /&gt;
可以在这个地址直接查看：http://aprs.fi/?c=raw&amp;amp;call=YOUR_CALL_SIGNE 刚刚推送的消息&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== RAW Data 分析 ===&lt;br /&gt;
&lt;br /&gt;
APRSdroid 发送：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-04-15 07:20:39 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2GYOR::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-15 07:22:09 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2GYOR::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-15 07:43:11 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2GYOR:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-15 07:43:11 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2GYOR::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-15 23:06:00 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-15 23:06:00 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-15 23:06:00 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM::SMS      :help.eprs@gmail.com testing msg {1&lt;br /&gt;
2013-04-15 23:08:58 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-15 23:08:58 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM::SMS      :help.eprs@gmail.com testing msg {1&lt;br /&gt;
2013-04-15 23:08:58 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2HAM::EPRS     :tesing msg msg{1&lt;br /&gt;
2013-04-16 06:45:48 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-16 06:45:48 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EMAIL    :help.eprs@gmail.com testing via aprs{1&lt;br /&gt;
2013-04-16 06:45:48 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EPRS     :tesing msg msg{1&lt;br /&gt;
2013-04-17 02:42:03 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD:=4000.00N/11631.20E$ http://aprsdroid.org/&lt;br /&gt;
2013-04-17 02:42:03 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EPRS     :tesing msg msg{1&lt;br /&gt;
2013-04-17 03:04:20 CDT: BY1WJ-5&amp;gt;APDR12,TCPIP*,qAC,T2CSNGRAD::EPRS     :tesing messages{1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
手持台发送：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2013-05-22 23:52:01 PDT: BH1RBH-7&amp;gt;SYUYQ1,WIDE1-1,WIDE2-1,qAS,BY1WJ:',7ll,'K\&amp;gt;=&lt;br /&gt;
2013-05-25 09:26:49 PDT: BH1RBH-7&amp;gt;0PPPZZ,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;K\&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
2013-05-25 09:38:42 PDT: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAR,BH1RBH-1::EPRS     :test{0&lt;br /&gt;
2013-05-25 19:57:51 PDT: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAR,BH1RBH-1::EMAIL    :liuhelga@gmail.com eprs testing msg via aprs{3&lt;br /&gt;
2013-05-25 20:33:32 PDT: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAR,BH1RBH-1::BH1DCY-9 :73{5&lt;br /&gt;
2013-05-26 19:03:32 PDT: BH1RBH-7&amp;gt;3YUYZL,WIDE1-1,WIDE2-1,qAS,BY1WJ:`,6tl?XK\&amp;gt;EPRS=&lt;br /&gt;
2013-05-26 19:04:21 PDT: BH1RBH-7&amp;gt;3YUYZL,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:`,6zlR}K\&amp;gt;EPRS=&lt;br /&gt;
2013-05-28 23:26:08 PDT: BH1RBH-7&amp;gt;3YUYQ1,APRSAT,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:`,7ll&amp;quot;H[/&amp;gt;EPRS=&lt;br /&gt;
2013-05-28 23:27:55 PDT: BH1RBH-7&amp;gt;3YUYQ1,APRSAT,WIDE2-1,qAR,BH1RBH-1:`,7ml!t[/&amp;gt;EPRS=&lt;br /&gt;
2013-05-29 18:36:08 PDT: BH1RBH-7&amp;gt;3YUYS6,WIDE1-1,qAR,BH1RBH-1:`,6ulRg[/&amp;gt;EPRS=&lt;br /&gt;
2013-05-29 20:40:40 PDT: BH1RBH-7&amp;gt;0PPPPP,BH1RBH-1,WIDE2-1,qAS,BY1WJ:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;[/&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
2013-05-29 20:41:59 PDT: BH1RBH-7&amp;gt;0PPPPP,BH1RBH-1,qAS,BY1WJ:'vX&amp;lt;0x1c&amp;gt;&amp;lt;0x1c&amp;gt; &amp;lt;0x1c&amp;gt;[/&amp;gt;EPRS= [Latitude and longitude are both 0]&lt;br /&gt;
2013-05-30 20:58:33 PDT: BH1RBH-7&amp;gt;APK003,WIDE1-1,WIDE2-1,qAS,BY1WJ::BH1RBH-7 :home alarm!{9&lt;br /&gt;
2013-05-30 21:18:59 PDT: BH1RBH-7&amp;gt;3YUYQ1,WIDE1-1,WIDE2-1,qAR,BH1RBH-1:`,7ml&amp;quot;q[/&amp;gt;EPRS=&lt;br /&gt;
2013-05-30 21:42:38 PDT: BH1RBH-7&amp;gt;3YUYQ0,WIDE1-1,WIDE2-1,qAS,BY1WJ:`,7ml5![/&amp;gt;EPRS=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MIC-E ===&lt;br /&gt;
&lt;br /&gt;
http://www.tapr.org/kits_mic-e.html#message_format&lt;br /&gt;
&lt;br /&gt;
https://github.com/hessu/aprsc/blob/master/src/parse_aprs.c [parse_aprs_mice]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== APRS PATH ===&lt;br /&gt;
&lt;br /&gt;
http://www.kd5om.com/aprspaths.htm&lt;br /&gt;
&lt;br /&gt;
http://wa8lmf.net/DigiPaths/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== APRS Satellites ==&lt;br /&gt;
&lt;br /&gt;
Operational: GO32, semi: PCSAT1, Echo, ISS2, decayed: PCSAT2, ANDE, RAFT, and in-work, P-sat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://aprs.org/astars/email.txt SENDING EMAIL via the APRS Capable Satellites]&lt;br /&gt;
&lt;br /&gt;
* [http://www.aprs.org/astars.html ASTARS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
APRS on ISS: http://www.ariss.net/index.cgi?absolute=1&lt;br /&gt;
&lt;br /&gt;
APRS on NO-44: http://www.findu.com/cgi-bin/pcsat.cgi?absolute=1&lt;br /&gt;
&lt;br /&gt;
ISS/APRS FAQ: http://www.aprs.org/iss-faq.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HF APRS ==&lt;br /&gt;
&lt;br /&gt;
* SDR-4: http://www.crosscountrywireless.net/sdr-4.htm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/%E9%A6%96%E9%A1%B5</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/%E9%A6%96%E9%A1%B5"/>
				<updated>2026-03-31T04:28:50Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=bash&amp;gt;         &lt;br /&gt;
                            &lt;br /&gt;
 _    _      _                            _            ___            _    _       _           _     &lt;br /&gt;
| |  | |    | |                          | |          |_  |          | |  ( )     | |         | |    &lt;br /&gt;
| |  | | ___| | ___ ___  _ __ ___   ___  | |_ ___       | | __ _  ___| | _|/ ___  | |     __ _| |__  &lt;br /&gt;
| |/\| |/ _ \ |/ __/ _ \| '_ ` _ \ / _ \ | __/ _ \      | |/ _` |/ __| |/ / / __| | |    / _` | '_ \ &lt;br /&gt;
\  /\  /  __/ | (_| (_) | | | | | |  __/ | || (_) | /\__/ / (_| | (__|   &amp;lt;  \__ \ | |___| (_| | |_) |&lt;br /&gt;
 \/  \/ \___|_|\___\___/|_| |_| |_|\___|  \__\___/  \____/ \__,_|\___|_|\_\ |___/ \_____/\__,_|_.__/ &lt;br /&gt;
   &lt;br /&gt;
                                                     --- A Geekerspace to investigate unknown world&lt;br /&gt;
&lt;br /&gt;
My callsign: BH1RBH&lt;br /&gt;
Donate the bitcoin: 1FB5ZTc52u2q8mfAZXCU323Rx7YHSY7cF6&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:420px;float:right; border:1px solid #d0d0d0; background:#ffffff; padding:5px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #44c8f4; background:#44c8f4;font-weight:bold; color:#f4fafc; margin-bottom:5px;padding: 0 5px;&amp;quot;&amp;gt;&lt;br /&gt;
小动物&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[狗狗心包积液]]&lt;br /&gt;
* [[狗狗训练]]&lt;br /&gt;
* [[狗狗安定信号]]&lt;br /&gt;
* [[BioInfo]] 生物信息&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #44c8f4; background:#44c8f4;font-weight:bold; color:#f4fafc; margin-bottom:5px;padding: 0 5px;&amp;quot;&amp;gt;&lt;br /&gt;
智能家居&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[客厅小型盆花自动浇水系统]]&lt;br /&gt;
* [[CAMGO]] 开放好玩的智能家居系统&lt;br /&gt;
* [[Noduino]] Noduino WIKI&lt;br /&gt;
* [[ESP8266]] RMB7 块的 WiFi SoC，带 32bit MCU，主频 80MHz&lt;br /&gt;
* [[ESP32]] 超高性价比、低功耗蓝牙、WiFi 一体 SoC，双核 32bit MCU，主频 240MHz，520KB RAM&lt;br /&gt;
* [[K210]] 带神经网络加速引擎的双核 64bit RISC-V SoC&lt;br /&gt;
* [[AT6558]] RMB 10 块的 BDS/GNSS 全星座 SoC 芯片  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[小米路由核心支持包]] 此内核源码由 Jack Tan 分析、开发、维护&lt;br /&gt;
* [[小米路由改私有云]] / [[小米路由mini]]&lt;br /&gt;
&lt;br /&gt;
* [[贾维斯智能系统]] 专为主人服务，涉及社交家庭环境感知、家庭控制、家庭安防、家人看护、家庭成员信息服务等等&lt;br /&gt;
* [[洗手间镜子智能化]] Magic Mirror&lt;br /&gt;
&lt;br /&gt;
* [[英雄庭院自动喷灌系统]]&lt;br /&gt;
* [[PID]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #44c8f4; background:#44c8f4;font-weight:bold; color:#ffffff; margin-bottom:5px;padding: 0 5px;&amp;quot;&amp;gt;&lt;br /&gt;
登山、户外、旅行&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''项目开发'''&lt;br /&gt;
* [[紧急情况位置报告系统 (EPRS)]]&lt;br /&gt;
* [[岩之道]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''装备'''&lt;br /&gt;
* [[海拔与氧气含量]]&lt;br /&gt;
* [[Weather]] 天气数据分析&lt;br /&gt;
* [[常见燃料理化性质]]&lt;br /&gt;
* [[酒精炉 DIY]] 之禅境 (Zen Alcohol Stoves)&lt;br /&gt;
* [[户外地图制作]]&lt;br /&gt;
* [[户外电源选型]]&lt;br /&gt;
* [[户外装备笔记]]&lt;br /&gt;
* [[SolarX]] 超轻登山徒步用太阳能充电板&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''活动记录'''&lt;br /&gt;
* [[近年户外活动记录]]&lt;br /&gt;
* [[春节泰国甲米攀岩物资清单]]&lt;br /&gt;
* [[烟花三月下扬州]]&lt;br /&gt;
* [[动物世界肯尼亚]]&lt;br /&gt;
* [[春节越南吉婆岛攀岩]]&lt;br /&gt;
* [[甘南年保玉则]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''远期计划'''&lt;br /&gt;
* [[魅力南极点]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[国家交通体系]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #44c8f4; background:#44c8f4;font-weight:bold; color:#ffffff; margin-bottom:5px;padding: 0 5px;&amp;quot;&amp;gt;&lt;br /&gt;
摄影&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
个人摄影学习、实践的心得体会，随手记录，以免忘记&lt;br /&gt;
&lt;br /&gt;
* [[器材搭配]]&lt;br /&gt;
* [[黑白胶片手洗笔记]]&lt;br /&gt;
* [[摄影学习笔记]]&lt;br /&gt;
* [[摄影光学]]&lt;br /&gt;
* [[天文摄影]]&lt;br /&gt;
* [[GNU/Linux 下EXIF相关小工具]]&lt;br /&gt;
* [[Aerial Homepage Admin]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #44c8f4; background:#44c8f4;font-weight:bold; color:#ffffff; margin-bottom:5px;padding: 0 5px;&amp;quot;&amp;gt;&lt;br /&gt;
生活&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''汽车'''&lt;br /&gt;
&lt;br /&gt;
* [[家用车选型]]&lt;br /&gt;
* [[汽车电子]]&lt;br /&gt;
* [[汽车总线]]&lt;br /&gt;
* [[汽车发动机结构（汽油机）]]&lt;br /&gt;
* [[汽车轮胎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''其他'''&lt;br /&gt;
&lt;br /&gt;
* [[安全电压]]&lt;br /&gt;
* [[北京市政交通一卡通的前世今生]]&lt;br /&gt;
* [[MRI]] (Magnetic Resonance Imaging, 核磁共振成像)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #d0e0d0; background:#ffffff; padding:5px; margin-right: 442px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #12c309; background:#12c309; color:#ffffff; margin-bottom:0;padding: 0 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;基础设施&amp;lt;/b&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[MIPS 体系结构相关文集汇编]] 汇集有 Jack (BH1RBH) 近年撰写的 MIPS 体系结构相关的文章，主要集中在体系结构和Linux内核交会的部分&lt;br /&gt;
* [[系统虚拟化技术资料汇编]]&lt;br /&gt;
* [[GNU/Linux 内核移植捉虫笔记 (Linux Kernel Debug Notes)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Raspberry精要‎]]&lt;br /&gt;
* [[OpenWRT Tips]]&lt;br /&gt;
* [[Arduino]] 精要&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[DL QuickStart]] 深度学习上手快速指南&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Debian 基本系统安装关键技术]]&lt;br /&gt;
* [[深入 Debian APT 包管理系统]]&lt;br /&gt;
* [[GNU/Linux Tips]]&lt;br /&gt;
* [[GNU/Linux 下超酷又灵活的 Email 系统]]&lt;br /&gt;
* [[GNU/Linux 库机制笔记]]&lt;br /&gt;
* [[GNU/Linux下科学计算绘图工具]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Win32 下动态链接库 (DLL) 机制笔记]]&lt;br /&gt;
* [[Golang QuickStart]]&lt;br /&gt;
* [[Python QuickStart]]&lt;br /&gt;
* [[Docker QuickStart]]&lt;br /&gt;
* [[PHP笔记]]&lt;br /&gt;
* [[Perl笔记]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Android/CyanogenMod 发烧笔记]]  ---  深度玩转智能手机，规避开放平台的陷阱，高度关注收集用户信息的应用和系统&lt;br /&gt;
* [[基带处理器和射频前端的体系结构]]&lt;br /&gt;
* [[SMS Gateway]]&lt;br /&gt;
* [[Cell ID Collect]]&lt;br /&gt;
* [[GSM Research]]&lt;br /&gt;
* [[Google Map Hack]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Hack a Nokia N900]]&lt;br /&gt;
* [[NFC Research]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Android Wear 笔记]]&lt;br /&gt;
* [[Google Glass 笔记]]&lt;br /&gt;
* [[Google Glass Tips]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[bitcoin]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #12c309; background:#12c309; color:#ffffff; margin-bottom:0;padding: 0 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;业余无线电&amp;lt;/b&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*[[Telecom-history]] by BH1RBG&lt;br /&gt;
*[[杂烩移动通讯]] by BH1RBG&lt;br /&gt;
*[[Lora实战]] by BH1RBG&lt;br /&gt;
*[[LoRa]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[串行通讯RS232-RS485]] by BH1RBG&lt;br /&gt;
*[[UART_体系结构]]&lt;br /&gt;
&lt;br /&gt;
* [[Antenna]] 天线笔记&lt;br /&gt;
* [[APRS]], [[AIS]], [[ADS-B]]&lt;br /&gt;
* [[OpenGD77]], [[OpenRTX]]&lt;br /&gt;
* [[SDR]] 软件无线电技术追踪&lt;br /&gt;
* [[GNU Radio]]&lt;br /&gt;
* [[尝试使用APRS追踪宠物]]&lt;br /&gt;
* [[数字通信]]&lt;br /&gt;
* [[电波对时]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[应急无线电频率]]&lt;br /&gt;
* [[TH-D72 快速上手]]&lt;br /&gt;
* [[FT-817 快速上手]]&lt;br /&gt;
* [[TH-D72 连 Garmin 60CSx 串口线 DIY]]&lt;br /&gt;
* [[Garmin 60CSX 加蓝牙手记]]&lt;br /&gt;
* [[智能手机和手台的音频连接线]]&lt;br /&gt;
* [[CubeSat]]&lt;br /&gt;
* [[航天器上的处理器]]&lt;br /&gt;
* [[ARINC653]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border:1px solid #12c309; background:#12c309; color:#ffffff; margin-bottom:0;padding: 0 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;航空飞行&amp;lt;/b&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[航空飞行常识]]&lt;br /&gt;
* [[飞行驾照]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[空中交通管制 (ATC)]]&lt;br /&gt;
* [[空中交通无线电通话用语]]&lt;br /&gt;
* [[航空专用电台]]&lt;br /&gt;
&lt;br /&gt;
* [[无方向性无线电信标系统 (NDB)]]&lt;br /&gt;
* [[甚高频全向信标系统 (VOR)]]&lt;br /&gt;
* [[仪表着陆系统 (ILS)]]&lt;br /&gt;
* [[飞机通信寻址与报告系统 (ACARS)]]&lt;br /&gt;
* [[航空气象报文解码]]&lt;br /&gt;
&lt;br /&gt;
* [[航路信息]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/PY32</id>
		<title>PY32</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/PY32"/>
				<updated>2026-03-31T02:11:33Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Toolchain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
PY32F002A, PY32F003, PY32F030 三个系列硬件相同, 代码通用&lt;br /&gt;
&lt;br /&gt;
https://www.puyasemi.com/mcu_weichuliqi.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://github.com/IOsetting/py32f0-template&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/puya-semiconductor/tools-and-software&lt;br /&gt;
* 使用GCC ARM 工具链的项目模板 https://github.com/IOsetting/py32f0-template&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Low Power ==&lt;br /&gt;
&lt;br /&gt;
* https://www.cnblogs.com/milton/p/18168592&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* https://www.cnblogs.com/milton/p/17051864.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/F1C</id>
		<title>F1C</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/F1C"/>
				<updated>2026-03-11T07:35:39Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Core overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Core overview ==&lt;br /&gt;
&lt;br /&gt;
* F1C100s / F1C200s&lt;br /&gt;
** USB 2.0 OTG, UART x3, SPI x2, TWI x3, &lt;br /&gt;
&lt;br /&gt;
* V831 &amp;lt;---&lt;br /&gt;
** USB 2.0 OTG, UART x4, SPI x2, TWI x4, GPIO x4&lt;br /&gt;
&lt;br /&gt;
* V851S (64MB), V851SE (64MB, SiP EPHY, no display),  V851S3 (128MB)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x6&lt;br /&gt;
&lt;br /&gt;
* V853 / V853s (LFBGA, no SiP RAM)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x8&lt;br /&gt;
&lt;br /&gt;
* V861: 128MB DDR3, 1T NPU, C907x2, E907x1, 2025/11&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F1C100s Overview ==&lt;br /&gt;
&lt;br /&gt;
* ARM926-EJS, up to 900MHz&lt;br /&gt;
* 32KB I-Cache, 16KB D-Cache, 5-stage pipeline&lt;br /&gt;
* 32MB SiP DDR1 (F1C200s is 64MB SiP DDR1)&lt;br /&gt;
&lt;br /&gt;
* RGB LCD interface&lt;br /&gt;
* USB 2.0 OTG&lt;br /&gt;
* SDIO&lt;br /&gt;
* SPI x2 (SPI_SCLK: 3KHz ~ 100MHz)&lt;br /&gt;
* TWI x3&lt;br /&gt;
* UART x3&lt;br /&gt;
* TV out x 1, TV in x 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PWM x2&lt;br /&gt;
* LRADC x1&lt;br /&gt;
* Speaker x2 + Mic x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-blockdiagram.jpg | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-typical-app.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C-roadmap.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-pinmap.jpg | 650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 荔枝派 Pin Map ===&lt;br /&gt;
&lt;br /&gt;
[[文件:Lichee-nano-pin-map.png]]&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** UART0_RX --- PE0&lt;br /&gt;
** UART0_TX --- PE1&lt;br /&gt;
** dtb 中默认系统启动的串口 serial0:115200n8&lt;br /&gt;
** UART1_RX --- PD3 --- D5&lt;br /&gt;
** UART1_TX --- PD4 --- D6&lt;br /&gt;
** UART2_RX --- PD14 --- D20&lt;br /&gt;
** UART2_TX --- PD13 --- D19&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SPI1&lt;br /&gt;
** PA0 - SPI1_CS&lt;br /&gt;
** PA1 - SPI1_MOSI&lt;br /&gt;
** PA2 - SPI1_SCK&lt;br /&gt;
** PA3 - SPI1_MISO&lt;br /&gt;
** PE3 -- Reset -- D0&lt;br /&gt;
** PE4 -- Interrupt -- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB&lt;br /&gt;
** 右上角，PCLK 右边为 USB_DM (D-)&lt;br /&gt;
** 右上角，PCLK 左边为 USB_DP (D+)&lt;br /&gt;
** USB_ID，拉低为主机模式，拉高为设备模式。Nano 开发板将 USB_ID 47K 上拉到 3V3，同时 USB_ID 和 PE2 相连。dts 设置使用 PE2 作为检测管脚（默认 active high，即：高电平）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进入系统后，可通过改变 PE2 的高低电平来控制 USB 的模式。比如默认 dtb 设置 PE2 为 active high，则进系统后，设置 PE2 为低电平，则 USB 会切换为主机模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I2C0&lt;br /&gt;
** PE11 --- SCL&lt;br /&gt;
** PE12 --- SDA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* GPIO&lt;br /&gt;
** PE3 --- D0&lt;br /&gt;
** PE4 --- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/Lichee_nano.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
* Power&lt;br /&gt;
** VCC-CORE: 1.0 - 1.2V&lt;br /&gt;
** VCC-DRAM: 2.3 - 2.7V&lt;br /&gt;
** AVCC: 2.5 - 3.1V&lt;br /&gt;
** VCC-IO: 3.0 - 3.6V&lt;br /&gt;
** VCC-HP: 3.0 - 3.5V&lt;br /&gt;
** VCC-TV: 3.0 - 3.5V&lt;br /&gt;
** VCC-USB: 3.0 - 3.5V&lt;br /&gt;
&lt;br /&gt;
* SIP DDR1&lt;br /&gt;
** SVREF (P33) &lt;br /&gt;
&lt;br /&gt;
* 音频&lt;br /&gt;
** HPL, HPR 左右声道；HPCOM, HPCOMFP 接耳机插座&lt;br /&gt;
** LINEIN：可用于连接电吉他、电子琴、合成器等外界设备的音频信号，由于这些设备本身输出功率就比较大，因此需要连接到 Line in 端口录音，当然使用它们录音从某种程度上也可以被称为外部设备的“内录”。一般您使用的声卡越好，Line in里的噪音就会越低，录制效果也会比较好。&lt;br /&gt;
** MICIN：用于连接麦克风，和 Line in 的区别在于它有前置放大器，麦克风本身输出功率小，因此必须要有一个放大设备来放大音频信号&lt;br /&gt;
** VRA1, VRA2, FMINL, FMINR&lt;br /&gt;
&lt;br /&gt;
* TV&lt;br /&gt;
** TV_OUT&lt;br /&gt;
** TV_VRN, TV_VRP, TVIN1, TVIN0&lt;br /&gt;
&lt;br /&gt;
* KEY INPUT&lt;br /&gt;
** LRADC0: 6bit resolution; 0 - 2V, 250Hz; 3.0/2^6 = 0.047&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PE11 CLK Out ==&lt;br /&gt;
&lt;br /&gt;
PE11 管脚可以输出 clkout，给 CIF 摄像头的提供时钟源，节约成本&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;clk-mux@0x01c000f0&amp;quot;: {&lt;br /&gt;
		&amp;quot;parent&amp;quot;: [&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;losc&amp;quot;, &amp;quot;value&amp;quot;: 0 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;osc32k&amp;quot;, &amp;quot;value&amp;quot;: 1 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;hosc&amp;quot;, &amp;quot;value&amp;quot;: 2 }&lt;br /&gt;
		],&lt;br /&gt;
		&amp;quot;name&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 24, &amp;quot;width&amp;quot;: 2,&lt;br /&gt;
		&amp;quot;default&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;hosc&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;clk-ratio@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 20, &amp;quot;width&amp;quot;: 2, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-divider@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 8, &amp;quot;width&amp;quot;: 5, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-gate@0x01c000f0&amp;quot;: {&amp;quot;parent&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 31, &amp;quot;invert&amp;quot;: false, &amp;quot;default&amp;quot;: { &amp;quot;enable&amp;quot;: false } },&lt;br /&gt;
	&amp;quot;clk-link&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;link-clkout&amp;quot; },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可输出24MHZ，12MHZ，6MHZ。。。&lt;br /&gt;
&lt;br /&gt;
参考 patch: https://gitee.com/xboot/xboot/commit/245601d534de73748a37f05531ff7a11bdc0545c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
调试消息控制台设置：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
0 = KERN_EMERG      /* 系统即将崩溃 */&lt;br /&gt;
1 = KERN_ALERT      /* 需要立即关注 */&lt;br /&gt;
2 = KERN_CRIT       /* 紧急情况 */&lt;br /&gt;
3 = KERN_ERR        /* 错误消息 */&lt;br /&gt;
4 = KERN_WARNING    /* 警告消息 */&lt;br /&gt;
5 = KERN_NOTICE     /* 正常但需要注意 */&lt;br /&gt;
6 = KERN_INFO       /* 信息性消息 */&lt;br /&gt;
7 = KERN_DEBUG      /* 调试消息 */&lt;br /&gt;
&lt;br /&gt;
# 设置控制台级别&lt;br /&gt;
echo 6 &amp;gt; /proc/sys/kernel/printk        # 只显示 0-6 级别的消息&lt;br /&gt;
echo 8 &amp;gt; /proc/sys/kernel/printk        # 显示更多调试信息&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/printk        # 只显示紧急消息&lt;br /&gt;
&lt;br /&gt;
dmesg -n 8  # 效果同 echo 8 &amp;gt; /proc/sys/kernel/printk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone https://github.com/Icenowy/linux.git&lt;br /&gt;
&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
# 添加下面两行&lt;br /&gt;
192.30.253.112  github.com&lt;br /&gt;
151.101.73.194 github.global.ssl.fastly.net&lt;br /&gt;
&lt;br /&gt;
# 可自行通过dns检测网站检测github.global.ssl.fastly.net，更换为更快的ip地址&lt;br /&gt;
# 完整拉取linux极大，建议只拉取单层分支，减少等待时间：&lt;br /&gt;
$ git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.config: http://dl.sipeed.com/LICHEE/Nano/SDK/config    http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm menuconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8    #请自行修改编译线程数&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
arch/arm/boot/dts/suniv.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s-tesladr.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''arch/arm/boot/dts/Makefile:'''&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
dtb-$(CONFIG_MACH_SUNIV) += \&lt;br /&gt;
    suniv-f1c100s-ltegw.dtb \&lt;br /&gt;
    suniv-f1c100s-tesladr.dtb&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
查看 DTS 中对应的设备用了哪些关键字：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ grep -r of_property drivers/spi/ | grep spi-max-frequency&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SPI:'''&lt;br /&gt;
&lt;br /&gt;
SPI_SCLK: 3KHz ~ 100MHz&lt;br /&gt;
* SPI Nor Flash: spi-max-frequency = &amp;lt;50000000&amp;gt;; (50MHz)&lt;br /&gt;
* SPI 127x: spi-max-frequency = &amp;lt;10000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# CONFIG_SPI_SUN4I is not set&lt;br /&gt;
CONFIG_SPI_SUN6I=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
drivers/spi/spi-bitbang.o&lt;br /&gt;
drivers/spi/spidev.o&lt;br /&gt;
drivers/spi/spi-gpio.o&lt;br /&gt;
drivers/spi/spi.o&lt;br /&gt;
drivers/spi/spi-sun6i.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 leds {&lt;br /&gt;
             compatible = &amp;quot;gpio-leds&amp;quot;;&lt;br /&gt;
             blue_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:blue:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 4 GPIO_ACTIVE_LOW&amp;gt;; /* PE4 */&lt;br /&gt;
             };&lt;br /&gt;
             green_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:green:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 5 GPIO_ACTIVE_LOW&amp;gt;; /* PE5 */&lt;br /&gt;
                     default-state = &amp;quot;on&amp;quot;;&lt;br /&gt;
             };&lt;br /&gt;
             red_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:red:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 5 6 GPIO_ACTIVE_LOW&amp;gt;; /* PE6 */&lt;br /&gt;
             };&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
命令行方式：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat gpio.sh&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
if [ ! -e /sys/class/gpio/gpio$1 ]; then&lt;br /&gt;
    echo $1 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio$1/direction&lt;br /&gt;
echo $2 &amp;gt; /sys/class/gpio/gpio$1/value&lt;br /&gt;
&lt;br /&gt;
$ ./gpio.sh 105 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# A: 0&lt;br /&gt;
# B: 1&lt;br /&gt;
# C: 2&lt;br /&gt;
# D: 3&lt;br /&gt;
# E: 4&lt;br /&gt;
 * PB5 = 32*1 + 5 = 37&lt;br /&gt;
 * PC6= 32*2 + 6 = 70&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * PB5 = 32*1 + 5&lt;br /&gt;
 * PC6= 32*2 + 6&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
*/&lt;br /&gt;
gpio_direction_output(105, 0);     // 设置 PD9 为输出状态, 默认输出低电平&lt;br /&gt;
gpio_set_value(105, 1);                // 高电平&lt;br /&gt;
gpio_set_value(105, 0);                // 低电平&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
* pcf8563: 0x51&lt;br /&gt;
* sht3x: 0x44 / 0x45&lt;br /&gt;
* sht2x: 0x40&lt;br /&gt;
* sts3x: 0x4A / 0x4B&lt;br /&gt;
* pc10: 0x28&lt;br /&gt;
* pc10nsa: 0x6D&lt;br /&gt;
* pcz1: 0x28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TeslaDR:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        /* 在 pio 节点下，添加 i2c 引脚定义 */&lt;br /&gt;
        i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PE11&amp;quot;, &amp;quot;PE12&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M6:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
            i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PD12&amp;quot;, &amp;quot;PD0&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
            };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        i2c0: i2c@1C27000 {&lt;br /&gt;
            compatible = &amp;quot;allwinner,sun6i-a31-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x01C27000 0x400&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;7&amp;gt;;&lt;br /&gt;
            clocks = &amp;lt;&amp;amp;ccu CLK_BUS_I2C0&amp;gt;;&lt;br /&gt;
            resets = &amp;lt;&amp;amp;ccu RST_BUS_I2C0&amp;gt;;&lt;br /&gt;
            pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
            pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
            #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
            #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCL 和 SDA 必须 10K / 1K 拉高，否则 kernel 启动时会报：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    0.972082] i2c /dev entries driver&lt;br /&gt;
[    3.044909] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pcf8563@0x51:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# i2cdetect -y 0&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
常用命令：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@autoeco:~/f1c/linux$ date +%s -u&lt;br /&gt;
1758617972&lt;br /&gt;
&lt;br /&gt;
# date -s @1758617972&lt;br /&gt;
Tue Sep 23 08:59:32 UTC 2025&lt;br /&gt;
&lt;br /&gt;
# hwclock -r&lt;br /&gt;
[  369.265193] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.&lt;br /&gt;
hwclock: RTC_RD_TIME: Invalid argument&lt;br /&gt;
# hwclock -w&lt;br /&gt;
# hwclock -r&lt;br /&gt;
Tue Sep 23 08:59:59 2025  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LRADC ===&lt;br /&gt;
&lt;br /&gt;
* KEYADC_BaseAddr: 0x01C2 3400&lt;br /&gt;
* KEYADC_Ctrl_Reg: +0x00&lt;br /&gt;
* KEYADC_IntCtrl_Reg: +0x04&lt;br /&gt;
* KEYADC_IntStatus_Reg: +0x08&lt;br /&gt;
* KEYADC_Data_Reg: +0x0C&lt;br /&gt;
&lt;br /&gt;
* 6 位分辨率，检测电压范围 0~2V&lt;br /&gt;
* 最高 250Hz 采样率&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此 0 对应 0V，63 对应 2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取 4.2V 的电池电压，应采用 1% 的电阻分压，推荐 Vbat - 330K - 300K - GND，LRADC 测 300K 电阻的两端电压：&lt;br /&gt;
* 300/630 * 4.2 = 1.999&lt;br /&gt;
* 300/630 * 2.75 = 1.31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 电容触摸屏的支持 ===&lt;br /&gt;
&lt;br /&gt;
电容触摸屏的控制芯片为 GT911 使用 I2C 接口，我们要在 suniv-f1c100s-*.dts 文件中添加节点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/input/input.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/interrupt-controller/irq.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* 添加引用 */&lt;br /&gt;
&amp;amp;i2c0 {&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    gt911: touchscreen@14 {&lt;br /&gt;
        compatible = &amp;quot;goodix,gt911&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x14&amp;gt;;&lt;br /&gt;
        interrupt-parent = &amp;lt;&amp;amp;pio&amp;gt;;&lt;br /&gt;
        interrupts = &amp;lt;4 10 IRQ_TYPE_EDGE_FALLING&amp;gt;; /* (PE10) */&lt;br /&gt;
        pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
        pinctrl-0 = &amp;lt;&amp;amp;ts_reset_pin&amp;gt;;&lt;br /&gt;
        irq-gpios = &amp;lt;&amp;amp;pio 4 10 GPIO_ACTIVE_HIGH&amp;gt;; /* (PE10) */&lt;br /&gt;
        reset-gpios = &amp;lt;&amp;amp;pio 4 9 GPIO_ACTIVE_HIGH&amp;gt;; /* RST (PE9) */&lt;br /&gt;
        /* touchscreen-swapped-x-y */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;pio {&lt;br /&gt;
    ts_reset_pin: ts_reset_pin@0 {&lt;br /&gt;
        pins = &amp;quot;PE9&amp;quot;;&lt;br /&gt;
        function = &amp;quot;gpio_out&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若测试的触摸屏的 xy 方向颠倒，请添加或去掉 gt911 节点下的 touchscreen-swapped-x-y 属性。&lt;br /&gt;
&lt;br /&gt;
[https://item.taobao.com/item.htm?spm=a230r.1.14.87.57863beca0zG7h&amp;amp;id=589629409888&amp;amp;ns=1&amp;amp;abbucket=8#detail iTop 4412]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 长条屏 ===&lt;br /&gt;
&lt;br /&gt;
* 4.58 inch, 320x960, ST7701S, SPI+RGB, 40.37x117.9x2.08mm, Display 36.77x110.3mm, 40pin, 3.3V power supply&lt;br /&gt;
** 非 RGB 直驱，需通过 ST7701 转驱。得事先配置了 ST7701 才能够通过 RGB 口驱动。&lt;br /&gt;
** ST7701一上电需要10s-20s来启动，上电后最好延时20s再启动配置&lt;br /&gt;
** [https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628 LittleVGL ST7701][https://www.nxpic.org.cn/module/forum/thread-622198-1-1.html 捡屏幕第一弹—5寸480x854 ST7701屏]&lt;br /&gt;
&lt;br /&gt;
驱动实例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//ST7701S+AUO4.58&lt;br /&gt;
SPI_WriteComm (0xFF);     &lt;br /&gt;
SPI_WriteData (0x77); &lt;br /&gt;
SPI_WriteData (0x01);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x13);   &lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4.95 inch, 480x854, ST7701, SPI+RGB, 65x119x2.08mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI TFT 屏 ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.cnblogs.com/twzy/p/15160836.html SPI TFT屏幕修改与移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ESP8089 ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/notabucketofspam/ESP8089-SPI&lt;br /&gt;
* https://github.com/al177/esp8089&lt;br /&gt;
* https://whycan.com/t_5870.html&lt;br /&gt;
* https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
dts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;spi1 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    esp8089@0 {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        compatible = &amp;quot;boss,esp8089&amp;quot;;&lt;br /&gt;
        spi-cpol;&lt;br /&gt;
        spi-cpha;&lt;br /&gt;
        reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
        spi-max-frequency = &amp;lt;30000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        reset= &amp;lt;104&amp;gt;;&lt;br /&gt;
        interrupt= &amp;lt;103&amp;gt;;&lt;br /&gt;
        debug= &amp;lt;0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB OTG ===&lt;br /&gt;
&lt;br /&gt;
'''驱动'''通过读取 USB_ID 的电平，来判断是 host 模式还是 device 模式。&lt;br /&gt;
&lt;br /&gt;
micro-USB 口： pin1 - vcc，pin4 - usb_id, pin5 - gnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB_ID 检测脚，在 dts 配置为 PE2，默认 active high&lt;br /&gt;
* 当检测脚为高电平时，'''驱动 (driver)'''驱使硬件进入 device mode&lt;br /&gt;
* 当检测脚为低电平时，'''驱动 (driver)'''驱使硬件进入 host mode&lt;br /&gt;
* TeslaDR（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 10K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* nano 板（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 47K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* 当把 MicroUSB 的 usb_id 脚拉低时，即将 PE2 拉低，驱动驱使硬件进入 host mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USB Hub chip: gl850/gl850g&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device Mode (USB Gadget) ====&lt;br /&gt;
&lt;br /&gt;
F1C 作为 USB 设备，连接到主机。如果是 Linux 主机需要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo modprobe rndis_host&lt;br /&gt;
$ ifconfig usb0 192.168.3.1 up&lt;br /&gt;
&lt;br /&gt;
maybe:&lt;br /&gt;
$ sudo ifconfig enp0s20f0u3 192.168.3.1 up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作为客户端的 F1C 则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://blog.csdn.net/lan120576664/article/details/101081608&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的spi-flash系统编译创建全过程]&lt;br /&gt;
* [https://www.lotlab.org/2018/07/29/record-of-using-licheepi-part-2-using-linux-gadget/ 使用 Linux Gadget 复合设备共享网络与虚拟串口]&lt;br /&gt;
* [https://whycan.com/t_2889.html LicheePi Nano Usb复合设备RNDIS功能问题]&lt;br /&gt;
* [http://www.iipcb.com/blog/F1C100S_USB_DriverDebug1.html USB 裸机驱动]&lt;br /&gt;
&lt;br /&gt;
* https://irq5.io/2016/12/22/raspberry-pi-zero-as-multiple-usb-gadgets/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB 条码枪  ===&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_3963.html&lt;br /&gt;
* [https://whycan.com/t_6902.html 编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Serial ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_USB_SERIAL=y&lt;br /&gt;
CONFIG_USB_SERIAL_CH341=m&lt;br /&gt;
CONFIG_USB_SERIAL_CP210X=m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CH341 lsusb: 0x1a86:7523  (drivers/usb/serial/ch341.c)&lt;br /&gt;
* CP210x lsusb:  (drivers/usb/serial/cp210x.c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4G ===&lt;br /&gt;
&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
* [http://oldask.openluat.com/article/37 Air720模块Linux USB驱动以及PPP拨号说明]&lt;br /&gt;
* [http://oldask.openluat.com/article/79 Air720模块在linux设备上的RNDIS网卡使用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://wiki.jackslab.org/EMTC#AT Air724 AT 接口]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
入网不成功，可能导致枚举 usb 设备失败:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    7.780813] usb 1-1: new high-speed USB device number 2 using musb-hdrc&lt;br /&gt;
[    7.940764] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.210885] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.480803] usb 1-1: new high-speed USB device number 3 using musb-hdrc&lt;br /&gt;
[    8.630701] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.900700] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    9.020862] usb usb1-port1: attempt power cycle&lt;br /&gt;
[    9.510701] usb 1-1: new high-speed USB device number 4 using musb-hdrc&lt;br /&gt;
[    9.950713] usb 1-1: device not accepting address 4, error -71&lt;br /&gt;
[   10.100707] usb 1-1: new high-speed USB device number 5 using musb-hdrc&lt;br /&gt;
[   10.540723] usb 1-1: device not accepting address 5, error -71&lt;br /&gt;
[   10.546757] usb usb1-port1: unable to enumerate USB device&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
去除 sim 卡一样的错误 log，插入一个新卡一样，换 4G sim 卡一样的现象&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&lt;br /&gt;
ESP8266 接线：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
F1C200S			ESP8266Ex				ESP-12F&lt;br /&gt;
SPI_MOSI		SDIO_CMD(GPIO 11)		ESP_CS&lt;br /&gt;
SPI_MISO		SDIO_DATA_0(GPIO 7)		ESP_MISO&lt;br /&gt;
SPI_CLK			SDIO_CLK(GPIO 6)		ESP_CLK&lt;br /&gt;
WIFI_RESET(PD16/IO8)	CHOP_PU					ESP_EN(RST)&lt;br /&gt;
&lt;br /&gt;
SPI_CS			SDIO_DATA_3(GPIO 10)	ESP_GPIO10&lt;br /&gt;
WiFi_INT(PD18)	SDIO_DATA_1(GPIO 8)		ESP_MOSI&lt;br /&gt;
&lt;br /&gt;
精简 PIN，则：SDIO_DATA_3 (12F_GPIO10, SPI-CS) 拉低、SDIO_DATA_1 (12F_MOSI, WiFi_INT) 悬空&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot select:'''&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO15 (MTDO)&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO0&lt;br /&gt;
* GND &amp;lt;--- ESP8266_GPIO2&lt;br /&gt;
&lt;br /&gt;
ESP8266 Reset 后，通过判断如下管脚的状态来决定启动模式：  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MTDO 	GPIO0 	GPIO2 	Mode 	Description&lt;br /&gt;
L 	L 	H 	UART 	串口刷机&lt;br /&gt;
L 	H 	H 	Flash 	SPI Flash 正常启动&lt;br /&gt;
H 	x 	x 	SDIO 	SD-card 启动&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTDO 为 GPIO15&lt;br /&gt;
&lt;br /&gt;
启动时串口输出的 'boot mode:(x, y)' ， x 的低三位对应  {MTDO, GPIO0, GPIO2}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_2179.html  RTL8189 / rtl8723bs&lt;br /&gt;
* https://whycan.com/t_4149.html ESP8089 https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# ls -l /usr/lib/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3.19.13&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200.26.0&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200.26.0&lt;br /&gt;
# ls -l /usr/sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        296866 Jan  1  1970 wpa_cli&lt;br /&gt;
-rwx------    1 root     root        185953 Jan  1  1970 wpa_passphrase&lt;br /&gt;
-rwx------    1 root     root       9471254 Jan  1  1970 wpa_supplicant&lt;br /&gt;
# ls -l /sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwconfig&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwgetid&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwlist&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwpriv&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwspy&lt;br /&gt;
# ls -l /etc/ | grep 1970&lt;br /&gt;
-rw-------    1 root     root            96 Jan  1  1970 wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nginx:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep nginx&lt;br /&gt;
output/target/usr/sbin/nginx&lt;br /&gt;
output/target/etc/nginx&lt;br /&gt;
output/target/etc/nginx/win-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf&lt;br /&gt;
output/target/etc/nginx/mime.types&lt;br /&gt;
output/target/etc/nginx/koi-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi_params.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf.default&lt;br /&gt;
output/target/etc/nginx/fastcgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params&lt;br /&gt;
output/target/etc/nginx/uwsgi_params.default&lt;br /&gt;
output/target/etc/nginx/mime.types.default&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf&lt;br /&gt;
output/target/etc/nginx/uwsgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params.default&lt;br /&gt;
output/target/etc/nginx/koi-win&lt;br /&gt;
output/target/etc/init.d/S50nginx&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre&lt;br /&gt;
output/target/usr/lib/libpcre.a&lt;br /&gt;
output/target/usr/lib/libpcre.so&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcreposix.a&lt;br /&gt;
output/target/usr/lib/libpcreposix.so&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0.0.7&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcrecpp.a&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0.0.2&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/usr | grep html | grep -v pcre&lt;br /&gt;
output/target/usr/html/50x.html&lt;br /&gt;
output/target/usr/html/index.html&lt;br /&gt;
&lt;br /&gt;
$ scp -r output/target/usr/sbin/nginx root@192.168.1.204:/usr/sbin/&lt;br /&gt;
$ scp output/target/usr/lib/libpcre.so.1* root@192.168.1.204:/lib/&lt;br /&gt;
libpcre.so.1                                                                                               &lt;br /&gt;
libpcre.so.1.2.12 &lt;br /&gt;
$ scp -r output/target/etc/nginx root@192.168.1.204:/etc/&lt;br /&gt;
$ scp -r output/target/etc/init.d/S50nginx  root@192.168.1.204:/etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
CAN Gateway: https://whycan.com/t_6980.html&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/lushengchu_luis/article/details/77099239&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/a13698709128/article/details/104484467&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/weixin_59676688/article/details/124457092&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 摄像头 ==&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_5612.html 分享F1C100S的TVD源码，TVIN0接CVBS摄像头采集数据显示到LCD屏]&lt;br /&gt;
* [https://whycan.com/t_6902.html 站在微凉大侠的肩膀上，编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
* [https://whycan.com/t_2667.html 荔枝派zero 摄像头ov2640咸鱼使用（踩坑） 持续更新]&lt;br /&gt;
* [https://whycan.com/t_5327.html F1C200S使用OV2640拍照]&lt;br /&gt;
* [https://whycan.com/t_4056.html f1c100s的引脚怎么接csi摄像头]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 7.2-2017.11) 7.2.1 20171011&lt;br /&gt;
Copyright (C) 2017 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install python-setuptools&lt;br /&gt;
$ git clone https://github.com/Lichee-Pi/u-boot.git&lt;br /&gt;
$ cd u-boot&lt;br /&gt;
# 切换到 Nano 分支&lt;br /&gt;
$ git checkout nano-v2018.01&lt;br /&gt;
&lt;br /&gt;
# 设定各项默认配置为 nano 的spiflash支持版，若不带spi-flash的板子，请换成 licheepi_nano_defconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sunxi-tools ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git&lt;br /&gt;
$ cd sunxi-tools&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果出现：fel_lib.c:26:20: fatal error: libusb.h: No such file or directory，那需要安装libusb：&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libusb-1.0-0-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
新到的一片 F1C 设备 Nor/Nand/SD 卡 都无系统，则自动进入 fel 模式，可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 查看芯片信息&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
# FEL 模式失败&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
ERROR: Allwinner USB FEL device not found!&lt;br /&gt;
&lt;br /&gt;
# 列出所有芯片的信息&lt;br /&gt;
$ sudo sunxi-fel -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时有两种方式进行程序下载：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 1. 加载并运行之&lt;br /&gt;
$ sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin  # 单次运行&lt;br /&gt;
&lt;br /&gt;
# 2. 烧写入 spi-flash &lt;br /&gt;
$ sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 加载并执行 uboot 的 spl&lt;br /&gt;
$ sudo sunxi-fel spl [文件名]&lt;br /&gt;
&lt;br /&gt;
# 把文件内容写入内存指定地址(-p 是显示写入进度) &lt;br /&gt;
$ sudo sunxi-fel -p write [地址] [文件名]&lt;br /&gt;
&lt;br /&gt;
# 调用指定地址的函数&lt;br /&gt;
$ sudo sunxi-fel exec [地址]&lt;br /&gt;
&lt;br /&gt;
# 显示spiflash的信息&lt;br /&gt;
$ sudo sunxi-fel spiflash-info&lt;br /&gt;
&lt;br /&gt;
# 读取spiflash指定地址的数据并写入到文件&lt;br /&gt;
$ sudo sunxi-fel spiflash-read [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&lt;br /&gt;
# 写入指定文件的指定长度的内容到spiflash的指定地址&lt;br /&gt;
$ sudo sunxi-fel spiflash-write [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;如何进入 FEL mode：&amp;lt;/b&amp;gt; http://wiki.jackslab.org/F1C#FEL_mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
* http://nano.lichee.pro/build_sys/rootfs.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Buildroot ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget https://buildroot.org/downloads/buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ tar xvf buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ cd buildroot-2017.08/&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Buildroot Quick Start]]&lt;br /&gt;
&lt;br /&gt;
.config files: https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/buildroot.config&lt;br /&gt;
&lt;br /&gt;
快速添加一个 helloworld 包：http://www.chip-community.org/index.php/Startup_Program_with_Buildroot&lt;br /&gt;
&lt;br /&gt;
重 build 某个包：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-rebuild&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-dirclean&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-reinstall&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-source&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-show-depends&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-extract&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-staging&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-target&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-patch&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenWRT ====&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2573.html openwrt into spi-flash]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b licheepi-nano https://github.com/qinfengling/openwrt&lt;br /&gt;
cat &amp;gt; .config &amp;lt;&amp;lt; EOL&lt;br /&gt;
CONFIG_TARGET_sunxi=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9_DEVICE_suniv-f1c100s-licheepi-nano=y&lt;br /&gt;
CONFIG_DEVEL=y&lt;br /&gt;
CONFIG_BRCMFMAC_SDIO=y&lt;br /&gt;
CONFIG_BRCMFMAC_USB=y&lt;br /&gt;
CONFIG_DRIVER_11AC_SUPPORT=y&lt;br /&gt;
CONFIG_DRIVER_11N_SUPPORT=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_DEBUGFS=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_MESH=y&lt;br /&gt;
CONFIG_PACKAGE_brcmfmac-firmware-usb=y&lt;br /&gt;
CONFIG_PACKAGE_hostapd-common=y&lt;br /&gt;
CONFIG_PACKAGE_iw=y&lt;br /&gt;
CONFIG_PACKAGE_iwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-ahci-platform=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmfmac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmutil=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-cfg80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-libphy=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mac80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mmc=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-nls-base=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-of-mdio=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-rtc-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-scsi-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-sun4i-emac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-usb-core=y&lt;br /&gt;
CONFIG_PACKAGE_libiwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_swconfig=y&lt;br /&gt;
CONFIG_PACKAGE_wireless-regdb=y&lt;br /&gt;
CONFIG_PACKAGE_wpad-mini=y&lt;br /&gt;
CONFIG_SOFT_FLOAT=y&lt;br /&gt;
CONFIG_TARGET_OPTIONS=y&lt;br /&gt;
EOL&lt;br /&gt;
$ ./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;br /&gt;
$ make defconfig&lt;br /&gt;
$ make world&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/zhangheyang/openwrt&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* https://qinfengling.pro/build_openwrt_image_for_licheepi_nano.html&lt;br /&gt;
* [https://whycan.com/t_4279.html 尝试给f1c100s编译openwrt]&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的SPI-Flash系统编译创建全过程][https://whycan.com/t_2179.html 2]&lt;br /&gt;
* [[OpenWRT_Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig&lt;br /&gt;
&lt;br /&gt;
System configurration ---&amp;gt; [ ] Install timezone info&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/timezone&lt;br /&gt;
Etc/UTC&lt;br /&gt;
&lt;br /&gt;
$ ls -l /etc/localtime&lt;br /&gt;
/etc/localtime -&amp;gt; /usr/share/zoneinfo/Etc/UTC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deploy TF ===&lt;br /&gt;
&lt;br /&gt;
可以直接只用 TF 卡，分区时，前 3MB 留给 uboot 和 environments，第一个分区从 3MB 处开始&lt;br /&gt;
&lt;br /&gt;
'''给 U-Boot 的前 3MB:'''&lt;br /&gt;
&lt;br /&gt;
[[文件:F1c.tf.layout.png]]&lt;br /&gt;
&lt;br /&gt;
https://linux-sunxi.org/Bootable_SD_card&lt;br /&gt;
&lt;br /&gt;
需要将 uboot 写到 TF 卡 8KB 开始的位置&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''第一、二分区：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdX   # 进行分区操作&lt;br /&gt;
# 若已存分区即按 d 删除各个分区&lt;br /&gt;
# &lt;br /&gt;
# 通过 n 新建分区，第一分区16M，类型 c (W95 FAT32 LBA)，从 1MB 处 (start sector 2048) 开始，+16M；第二分区 +183M&lt;br /&gt;
# w 保存写入并退出&lt;br /&gt;
$ sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT&lt;br /&gt;
$ sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''第一分区：'''&lt;br /&gt;
* boot.scr    # u-boot 使用&lt;br /&gt;
* zImage&lt;br /&gt;
* suniv-f1c100s-licheepi-nano.dtb&lt;br /&gt;
&lt;br /&gt;
'''第二分区：'''&lt;br /&gt;
* 根文件系统内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''boot.scr 之生成：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat boot.cmd&lt;br /&gt;
setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw&lt;br /&gt;
load mmc 0:1 0x80C00000 suniv-f1c100s-ltegw.dtb&lt;br /&gt;
load mmc 0:1 0x80008000 zImage&lt;br /&gt;
bootz 0x80008000 - 0x80C00000&lt;br /&gt;
$ sudo apt install u-boot-tools&lt;br /&gt;
$ mkimage -C none -A arm -T script -d boot.cmd boot.scr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上电启动流程 ==&lt;br /&gt;
&lt;br /&gt;
After power-up, the F1C100s starts to fetch instructions from address '''0xFFFF_0000''' which is where the '''BROM''' is located at. It's an internal integrated 32 KB ROM Chip (Boot ROM or BROM).&lt;br /&gt;
&lt;br /&gt;
The BROM split up into two parts: The first part (at 0xFFFF_0000) is the '''FEL''' mode and the second is the '''eGON.BRM''' (located at 0xFFFF_4000).&lt;br /&gt;
&lt;br /&gt;
The reset vector is located at the very begining of FEL mode: at address 0xFFFF_0000. On reset, it jumps to 0xFFFF_0028 where it loads 0xFFFF_4000 (eGON.BRM) into the program counter to be executed next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== eGON Boot ===&lt;br /&gt;
&lt;br /&gt;
The eGON Boot ROM performs a few tasks:&lt;br /&gt;
&lt;br /&gt;
# do some [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L19 co-processor setup] ([http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbciiaf.html c15], (virtual) System Control Coprocessor).&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L23 disables] the WatchDog Timer&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L28 setups] CPU, AXI, AHB and APB0 clocks&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L34 enables] AHB Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L38 enables] APB0 Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L40 sets] the Stack Pointer to 32K&lt;br /&gt;
# then it [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L41 jumps] to [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L84 'boot'] which immediately [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L86 jumps to] [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot]&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot] setups up some registers, then [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2560 checks the status pin] (often called FEL pin, BSP pin or '''uboot''')&lt;br /&gt;
## if the pin is low (connected to GND) [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L90 executes] [[FEL]] mode at 0xFFFF_0020.&lt;br /&gt;
##  If the pin is high it continues trying to boot from the following media and on failure continues to the next in order.&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L91 SD Card0] also known as [[A10/CCM#CCM_MMC0_CLK|MMC0]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L98 Internal NAND flash] also known as [[A10/CCM#CCM_NAND_CLK|NAND]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L104 SD Card2] also known as [[A10/CCM#CCM_MMC2_CLK|MMC2]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L111 SPI connected NOR flash] also known as [[A10/CCM#CCM_SPI0_CLK|SPI]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s##L117 If all fails], '''FEL/USBBoot''' mode is [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L120 executed] from 0xFFFF_0020&lt;br /&gt;
&lt;br /&gt;
As can be seen, the SoC has several ways to boot and a lot would need to go wrong or 'fail' before entering FEL/USBBoot mode. This is especially important if there is a valid header in the NAND flash. Obviously this can be abused, by corrupting the header and thus forcing failure. If no other boot options are available, then FEL mode should be the final result. As a bypass mechanism, the A10 has the so called ''Boot Select Pin (BSP)''. This pin is normally internally pulled up by a 50KΩ resistor. If the pin is pulled low to GND, the A10 will try to boot into FEL/USBBoot mode. Otherwise the above boot-order will be tried.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
boot-&amp;gt; check fel key pressed (yes)--&amp;gt; FEL mode (boot from USB OTG)&lt;br /&gt;
                          \  &lt;br /&gt;
                      (no) \&lt;br /&gt;
                            \-------&amp;gt; 1) try to boot from SMHC0 (SD card)&lt;br /&gt;
                                      2) try to boot from SMHC2 (eMMC)&lt;br /&gt;
                                      3) try to boot from SPI0 (SPI NOR Flash)&lt;br /&gt;
                                      4) FEL mode (boot from USB OTG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  FEL mode ===&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F1C 无 Boot Select Pin 会依次尝试 MMC0 ---&amp;gt; NAND ---&amp;gt; MMC2 ---&amp;gt; NOR，如果启动都失败，就会进入 FEL mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方参考设计是将 PC2 短接到 GND 用了个按钮标记为 BOOT，PC2 所在的 SPI0 接的是 系统 eMMC，作为个 参考，PC2  =  SPI0_MISO = SDC1-D0，短接到 GND 即可使 eMMC 失效&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 短接 flash 的 1、4 两脚，重新上电，上电后松开短接，即可重新进入 fel 模式&lt;br /&gt;
* 在启动到内核前，回车进入 uboot，执行 sf probe 0;sf erase 0 0x100000;reset 即可重新进入 fel 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEL mode 下 PC 可用 sunxi-fei 工具通过 USB 口与 SoC 通信&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel uboot /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel -p spiflash-write 0 /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 下 erase flash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;gt; sf probe 0    # init flash device&lt;br /&gt;
&amp;gt; sf erase 0 0x100000    # erase 1MB flash&lt;br /&gt;
&amp;gt; reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
* http://linux-sunxi.org/FEL&lt;br /&gt;
* http://linux-sunxi.org/FEL/USBBoot&lt;br /&gt;
* http://linux-sunxi.org/BROM&lt;br /&gt;
* http://linux-sunxi.org/Sunxi-tools&lt;br /&gt;
* http://nano.lichee.pro/get_started/first_eat.html#id6&lt;br /&gt;
* [https://whycan.cn/t_717.html F1C100s入坑记录]&lt;br /&gt;
* [https://whycan.cn/t_3138.html 尝试从零构建F1C100s开发环境]&lt;br /&gt;
* https://whycan.com/t_2179.html spi-flash &amp;amp; wifi &amp;amp; usb-gad&lt;br /&gt;
* [https://whycan.com/t_6402.html &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot failed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# reboot&lt;br /&gt;
# Stopping network: OK&lt;br /&gt;
Saving random seed... done.&lt;br /&gt;
Stopping logging: OK&lt;br /&gt;
The system is going down NOW!&lt;br /&gt;
Sent SIGTERM to all processes&lt;br /&gt;
Sent SIGKILL to   20.550344 reboot: Restarting system&lt;br /&gt;
   21.549981 Reboot failed -- System halted&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原因：未使能看门狗。系统 Restart 时，是利用取消喂狗来触发看门狗超时，从而引发复位。&lt;br /&gt;
&lt;br /&gt;
修正： 内核配置时，选择 &lt;br /&gt;
&lt;br /&gt;
  Device Drivers → Watchdog Timer Support  → WatchDog Timer Driver Core 和 Allwinner SoCs watchdog support&lt;br /&gt;
&lt;br /&gt;
确保如下选项打开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_WATCHDOG=y&lt;br /&gt;
CONFIG_WATCHDOG_CORE=y&lt;br /&gt;
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y&lt;br /&gt;
CONFIG_SUNXI_WATCHDOG=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重新编译内核即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
* [http://linux-sunxi.org/images/b/ba/F1C100s_Datasheet_V1.0.pdf F1C100s Datasheet 2015]&lt;br /&gt;
* [http://dl.linux-sunxi.org/F1C100/Allwinner_F1C100_datasheet_20110331.pdf F1C100 Datasheet 2011]&lt;br /&gt;
* [https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf F1C600 User Manual]&lt;br /&gt;
* [http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf H3 Datasheet]&lt;br /&gt;
* [https://debugdump.com/files/20171005/13/Allwinner_V3s_Datasheet_V1.0.pdf V3S datasheet] [http://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf V3s datasheet]&lt;br /&gt;
&lt;br /&gt;
*  http://nano.lichee.pro&lt;br /&gt;
* http://tang.lichee.pro&lt;br /&gt;
&lt;br /&gt;
* [https://elinux.org/Device_Tree_Reference Device Tree]&lt;br /&gt;
* [http://nano.lichee.pro/build_sys/devicetree.html 设备树简介]&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_6402.html 自制基于F1C100s/F1C200s的M5Pi]&lt;br /&gt;
* [https://whycan.com/t_6388.html F1C100S开发了一个项目，原始技术实现，裸奔XUI GUI框架]&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2736.html 投屏软件scrcpy在Linux上的移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-11T03:24:20Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
* V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
* V861: 128MB DDR3, 1T NPU, C907x2, E907x1, 2025/11&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel &amp;amp; DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DTB 位于：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
&lt;br /&gt;
还有一个 v853 的可参考：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
复制到 linux-4.9/arch/arm/boot/dts/ 下，Makefile 对应 CONFIG_ARCH_SUN8IW21P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
prebuilt:&lt;br /&gt;
&lt;br /&gt;
  ./tina-v853/out/v851s/lizard/buildroot/buildroot/target&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-11T03:22:17Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
* V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
* V861: 128MB, 1T NPU, C907x2, E907x1, 2025/12/31&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel &amp;amp; DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DTB 位于：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
&lt;br /&gt;
还有一个 v853 的可参考：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
复制到 linux-4.9/arch/arm/boot/dts/ 下，Makefile 对应 CONFIG_ARCH_SUN8IW21P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
prebuilt:&lt;br /&gt;
&lt;br /&gt;
  ./tina-v853/out/v851s/lizard/buildroot/buildroot/target&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:45:10Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* ROOTFS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel &amp;amp; DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DTB 位于：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
&lt;br /&gt;
还有一个 v853 的可参考：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
复制到 linux-4.9/arch/arm/boot/dts/ 下，Makefile 对应 CONFIG_ARCH_SUN8IW21P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
prebuilt:&lt;br /&gt;
&lt;br /&gt;
  ./tina-v853/out/v851s/lizard/buildroot/buildroot/target&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:43:17Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Quick Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel &amp;amp; DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DTB 位于：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
&lt;br /&gt;
还有一个 v853 的可参考：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
复制到 linux-4.9/arch/arm/boot/dts/ 下，Makefile 对应 CONFIG_ARCH_SUN8IW21P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:42:33Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Kernel &amp;amp; DTB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel &amp;amp; DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DTB 位于：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
&lt;br /&gt;
还有一个 v853 的可参考：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
复制到 linux-4.9/arch/arm/boot/dts/ 下，Makefile 对应 CONFIG_ARCH_SUN8IW21P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:41:05Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Quick Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel &amp;amp; DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DTB 位于：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
&lt;br /&gt;
还有一个 v853 的可参考：&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
复制到 linux-4.9/arch/arm/boot/dts/ 下，Makefile 对应 CONFIG_ARCH_SUN8IW21P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:38:22Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Quick Start */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_ARCH_SUN8IW21P1=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:37:51Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cp -a ./tina-v853/kernel/linux-4.9 linux-4.9 &amp;amp;&amp;amp; cd linux-4.9&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_ARCH_SUN8IW21P1=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:35:04Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* DTB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_ARCH_SUN8IW21P1=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* tina-v853/device/config/chips/v851s/configs/lizard/board.dts&lt;br /&gt;
* tina-v853/device/config/chips/v853/configs/vision/board.dts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:10:06Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* DTB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
CONFIG_ARCH_SUN8IW21P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:08:42Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
CONFIG_ARCH_SUN8IW15P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T08:08:21Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Toolchain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===&lt;br /&gt;
&lt;br /&gt;
CONFIG_ARCH_SUN8IW15P1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T07:42:25Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Toolchain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T07:42:08Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Toolchain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T07:41:37Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* TF card boot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf  gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ ./out/toolchain/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412&lt;br /&gt;
Copyright (C) 2015 Free Software Foundation, Inc.&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/F1C</id>
		<title>F1C</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/F1C"/>
				<updated>2026-03-10T07:36:35Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Toolchain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Core overview ==&lt;br /&gt;
&lt;br /&gt;
* F1C100s / F1C200s&lt;br /&gt;
** USB 2.0 OTG, UART x3, SPI x2, TWI x3, &lt;br /&gt;
&lt;br /&gt;
* V831 &amp;lt;---&lt;br /&gt;
** USB 2.0 OTG, UART x4, SPI x2, TWI x4, GPIO x4&lt;br /&gt;
&lt;br /&gt;
* V851S (64MB), V851SE (64MB, SiP EPHY, no display),  V851S3 (128MB)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x6&lt;br /&gt;
&lt;br /&gt;
* V853 / V853s (LFBGA, no SiP RAM)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F1C100s Overview ==&lt;br /&gt;
&lt;br /&gt;
* ARM926-EJS, up to 900MHz&lt;br /&gt;
* 32KB I-Cache, 16KB D-Cache, 5-stage pipeline&lt;br /&gt;
* 32MB SiP DDR1 (F1C200s is 64MB SiP DDR1)&lt;br /&gt;
&lt;br /&gt;
* RGB LCD interface&lt;br /&gt;
* USB 2.0 OTG&lt;br /&gt;
* SDIO&lt;br /&gt;
* SPI x2 (SPI_SCLK: 3KHz ~ 100MHz)&lt;br /&gt;
* TWI x3&lt;br /&gt;
* UART x3&lt;br /&gt;
* TV out x 1, TV in x 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PWM x2&lt;br /&gt;
* LRADC x1&lt;br /&gt;
* Speaker x2 + Mic x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-blockdiagram.jpg | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-typical-app.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C-roadmap.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-pinmap.jpg | 650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 荔枝派 Pin Map ===&lt;br /&gt;
&lt;br /&gt;
[[文件:Lichee-nano-pin-map.png]]&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** UART0_RX --- PE0&lt;br /&gt;
** UART0_TX --- PE1&lt;br /&gt;
** dtb 中默认系统启动的串口 serial0:115200n8&lt;br /&gt;
** UART1_RX --- PD3 --- D5&lt;br /&gt;
** UART1_TX --- PD4 --- D6&lt;br /&gt;
** UART2_RX --- PD14 --- D20&lt;br /&gt;
** UART2_TX --- PD13 --- D19&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SPI1&lt;br /&gt;
** PA0 - SPI1_CS&lt;br /&gt;
** PA1 - SPI1_MOSI&lt;br /&gt;
** PA2 - SPI1_SCK&lt;br /&gt;
** PA3 - SPI1_MISO&lt;br /&gt;
** PE3 -- Reset -- D0&lt;br /&gt;
** PE4 -- Interrupt -- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB&lt;br /&gt;
** 右上角，PCLK 右边为 USB_DM (D-)&lt;br /&gt;
** 右上角，PCLK 左边为 USB_DP (D+)&lt;br /&gt;
** USB_ID，拉低为主机模式，拉高为设备模式。Nano 开发板将 USB_ID 47K 上拉到 3V3，同时 USB_ID 和 PE2 相连。dts 设置使用 PE2 作为检测管脚（默认 active high，即：高电平）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进入系统后，可通过改变 PE2 的高低电平来控制 USB 的模式。比如默认 dtb 设置 PE2 为 active high，则进系统后，设置 PE2 为低电平，则 USB 会切换为主机模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I2C0&lt;br /&gt;
** PE11 --- SCL&lt;br /&gt;
** PE12 --- SDA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* GPIO&lt;br /&gt;
** PE3 --- D0&lt;br /&gt;
** PE4 --- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/Lichee_nano.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
* Power&lt;br /&gt;
** VCC-CORE: 1.0 - 1.2V&lt;br /&gt;
** VCC-DRAM: 2.3 - 2.7V&lt;br /&gt;
** AVCC: 2.5 - 3.1V&lt;br /&gt;
** VCC-IO: 3.0 - 3.6V&lt;br /&gt;
** VCC-HP: 3.0 - 3.5V&lt;br /&gt;
** VCC-TV: 3.0 - 3.5V&lt;br /&gt;
** VCC-USB: 3.0 - 3.5V&lt;br /&gt;
&lt;br /&gt;
* SIP DDR1&lt;br /&gt;
** SVREF (P33) &lt;br /&gt;
&lt;br /&gt;
* 音频&lt;br /&gt;
** HPL, HPR 左右声道；HPCOM, HPCOMFP 接耳机插座&lt;br /&gt;
** LINEIN：可用于连接电吉他、电子琴、合成器等外界设备的音频信号，由于这些设备本身输出功率就比较大，因此需要连接到 Line in 端口录音，当然使用它们录音从某种程度上也可以被称为外部设备的“内录”。一般您使用的声卡越好，Line in里的噪音就会越低，录制效果也会比较好。&lt;br /&gt;
** MICIN：用于连接麦克风，和 Line in 的区别在于它有前置放大器，麦克风本身输出功率小，因此必须要有一个放大设备来放大音频信号&lt;br /&gt;
** VRA1, VRA2, FMINL, FMINR&lt;br /&gt;
&lt;br /&gt;
* TV&lt;br /&gt;
** TV_OUT&lt;br /&gt;
** TV_VRN, TV_VRP, TVIN1, TVIN0&lt;br /&gt;
&lt;br /&gt;
* KEY INPUT&lt;br /&gt;
** LRADC0: 6bit resolution; 0 - 2V, 250Hz; 3.0/2^6 = 0.047&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PE11 CLK Out ==&lt;br /&gt;
&lt;br /&gt;
PE11 管脚可以输出 clkout，给 CIF 摄像头的提供时钟源，节约成本&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;clk-mux@0x01c000f0&amp;quot;: {&lt;br /&gt;
		&amp;quot;parent&amp;quot;: [&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;losc&amp;quot;, &amp;quot;value&amp;quot;: 0 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;osc32k&amp;quot;, &amp;quot;value&amp;quot;: 1 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;hosc&amp;quot;, &amp;quot;value&amp;quot;: 2 }&lt;br /&gt;
		],&lt;br /&gt;
		&amp;quot;name&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 24, &amp;quot;width&amp;quot;: 2,&lt;br /&gt;
		&amp;quot;default&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;hosc&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;clk-ratio@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 20, &amp;quot;width&amp;quot;: 2, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-divider@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 8, &amp;quot;width&amp;quot;: 5, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-gate@0x01c000f0&amp;quot;: {&amp;quot;parent&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 31, &amp;quot;invert&amp;quot;: false, &amp;quot;default&amp;quot;: { &amp;quot;enable&amp;quot;: false } },&lt;br /&gt;
	&amp;quot;clk-link&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;link-clkout&amp;quot; },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可输出24MHZ，12MHZ，6MHZ。。。&lt;br /&gt;
&lt;br /&gt;
参考 patch: https://gitee.com/xboot/xboot/commit/245601d534de73748a37f05531ff7a11bdc0545c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
调试消息控制台设置：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
0 = KERN_EMERG      /* 系统即将崩溃 */&lt;br /&gt;
1 = KERN_ALERT      /* 需要立即关注 */&lt;br /&gt;
2 = KERN_CRIT       /* 紧急情况 */&lt;br /&gt;
3 = KERN_ERR        /* 错误消息 */&lt;br /&gt;
4 = KERN_WARNING    /* 警告消息 */&lt;br /&gt;
5 = KERN_NOTICE     /* 正常但需要注意 */&lt;br /&gt;
6 = KERN_INFO       /* 信息性消息 */&lt;br /&gt;
7 = KERN_DEBUG      /* 调试消息 */&lt;br /&gt;
&lt;br /&gt;
# 设置控制台级别&lt;br /&gt;
echo 6 &amp;gt; /proc/sys/kernel/printk        # 只显示 0-6 级别的消息&lt;br /&gt;
echo 8 &amp;gt; /proc/sys/kernel/printk        # 显示更多调试信息&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/printk        # 只显示紧急消息&lt;br /&gt;
&lt;br /&gt;
dmesg -n 8  # 效果同 echo 8 &amp;gt; /proc/sys/kernel/printk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone https://github.com/Icenowy/linux.git&lt;br /&gt;
&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
# 添加下面两行&lt;br /&gt;
192.30.253.112  github.com&lt;br /&gt;
151.101.73.194 github.global.ssl.fastly.net&lt;br /&gt;
&lt;br /&gt;
# 可自行通过dns检测网站检测github.global.ssl.fastly.net，更换为更快的ip地址&lt;br /&gt;
# 完整拉取linux极大，建议只拉取单层分支，减少等待时间：&lt;br /&gt;
$ git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.config: http://dl.sipeed.com/LICHEE/Nano/SDK/config    http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm menuconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8    #请自行修改编译线程数&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
arch/arm/boot/dts/suniv.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s-tesladr.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''arch/arm/boot/dts/Makefile:'''&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
dtb-$(CONFIG_MACH_SUNIV) += \&lt;br /&gt;
    suniv-f1c100s-ltegw.dtb \&lt;br /&gt;
    suniv-f1c100s-tesladr.dtb&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
查看 DTS 中对应的设备用了哪些关键字：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ grep -r of_property drivers/spi/ | grep spi-max-frequency&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SPI:'''&lt;br /&gt;
&lt;br /&gt;
SPI_SCLK: 3KHz ~ 100MHz&lt;br /&gt;
* SPI Nor Flash: spi-max-frequency = &amp;lt;50000000&amp;gt;; (50MHz)&lt;br /&gt;
* SPI 127x: spi-max-frequency = &amp;lt;10000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# CONFIG_SPI_SUN4I is not set&lt;br /&gt;
CONFIG_SPI_SUN6I=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
drivers/spi/spi-bitbang.o&lt;br /&gt;
drivers/spi/spidev.o&lt;br /&gt;
drivers/spi/spi-gpio.o&lt;br /&gt;
drivers/spi/spi.o&lt;br /&gt;
drivers/spi/spi-sun6i.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 leds {&lt;br /&gt;
             compatible = &amp;quot;gpio-leds&amp;quot;;&lt;br /&gt;
             blue_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:blue:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 4 GPIO_ACTIVE_LOW&amp;gt;; /* PE4 */&lt;br /&gt;
             };&lt;br /&gt;
             green_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:green:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 5 GPIO_ACTIVE_LOW&amp;gt;; /* PE5 */&lt;br /&gt;
                     default-state = &amp;quot;on&amp;quot;;&lt;br /&gt;
             };&lt;br /&gt;
             red_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:red:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 5 6 GPIO_ACTIVE_LOW&amp;gt;; /* PE6 */&lt;br /&gt;
             };&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
命令行方式：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat gpio.sh&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
if [ ! -e /sys/class/gpio/gpio$1 ]; then&lt;br /&gt;
    echo $1 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio$1/direction&lt;br /&gt;
echo $2 &amp;gt; /sys/class/gpio/gpio$1/value&lt;br /&gt;
&lt;br /&gt;
$ ./gpio.sh 105 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# A: 0&lt;br /&gt;
# B: 1&lt;br /&gt;
# C: 2&lt;br /&gt;
# D: 3&lt;br /&gt;
# E: 4&lt;br /&gt;
 * PB5 = 32*1 + 5 = 37&lt;br /&gt;
 * PC6= 32*2 + 6 = 70&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * PB5 = 32*1 + 5&lt;br /&gt;
 * PC6= 32*2 + 6&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
*/&lt;br /&gt;
gpio_direction_output(105, 0);     // 设置 PD9 为输出状态, 默认输出低电平&lt;br /&gt;
gpio_set_value(105, 1);                // 高电平&lt;br /&gt;
gpio_set_value(105, 0);                // 低电平&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
* pcf8563: 0x51&lt;br /&gt;
* sht3x: 0x44 / 0x45&lt;br /&gt;
* sht2x: 0x40&lt;br /&gt;
* sts3x: 0x4A / 0x4B&lt;br /&gt;
* pc10: 0x28&lt;br /&gt;
* pc10nsa: 0x6D&lt;br /&gt;
* pcz1: 0x28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TeslaDR:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        /* 在 pio 节点下，添加 i2c 引脚定义 */&lt;br /&gt;
        i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PE11&amp;quot;, &amp;quot;PE12&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M6:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
            i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PD12&amp;quot;, &amp;quot;PD0&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
            };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        i2c0: i2c@1C27000 {&lt;br /&gt;
            compatible = &amp;quot;allwinner,sun6i-a31-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x01C27000 0x400&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;7&amp;gt;;&lt;br /&gt;
            clocks = &amp;lt;&amp;amp;ccu CLK_BUS_I2C0&amp;gt;;&lt;br /&gt;
            resets = &amp;lt;&amp;amp;ccu RST_BUS_I2C0&amp;gt;;&lt;br /&gt;
            pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
            pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
            #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
            #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCL 和 SDA 必须 10K / 1K 拉高，否则 kernel 启动时会报：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    0.972082] i2c /dev entries driver&lt;br /&gt;
[    3.044909] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pcf8563@0x51:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# i2cdetect -y 0&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
常用命令：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@autoeco:~/f1c/linux$ date +%s -u&lt;br /&gt;
1758617972&lt;br /&gt;
&lt;br /&gt;
# date -s @1758617972&lt;br /&gt;
Tue Sep 23 08:59:32 UTC 2025&lt;br /&gt;
&lt;br /&gt;
# hwclock -r&lt;br /&gt;
[  369.265193] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.&lt;br /&gt;
hwclock: RTC_RD_TIME: Invalid argument&lt;br /&gt;
# hwclock -w&lt;br /&gt;
# hwclock -r&lt;br /&gt;
Tue Sep 23 08:59:59 2025  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LRADC ===&lt;br /&gt;
&lt;br /&gt;
* KEYADC_BaseAddr: 0x01C2 3400&lt;br /&gt;
* KEYADC_Ctrl_Reg: +0x00&lt;br /&gt;
* KEYADC_IntCtrl_Reg: +0x04&lt;br /&gt;
* KEYADC_IntStatus_Reg: +0x08&lt;br /&gt;
* KEYADC_Data_Reg: +0x0C&lt;br /&gt;
&lt;br /&gt;
* 6 位分辨率，检测电压范围 0~2V&lt;br /&gt;
* 最高 250Hz 采样率&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此 0 对应 0V，63 对应 2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取 4.2V 的电池电压，应采用 1% 的电阻分压，推荐 Vbat - 330K - 300K - GND，LRADC 测 300K 电阻的两端电压：&lt;br /&gt;
* 300/630 * 4.2 = 1.999&lt;br /&gt;
* 300/630 * 2.75 = 1.31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 电容触摸屏的支持 ===&lt;br /&gt;
&lt;br /&gt;
电容触摸屏的控制芯片为 GT911 使用 I2C 接口，我们要在 suniv-f1c100s-*.dts 文件中添加节点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/input/input.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/interrupt-controller/irq.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* 添加引用 */&lt;br /&gt;
&amp;amp;i2c0 {&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    gt911: touchscreen@14 {&lt;br /&gt;
        compatible = &amp;quot;goodix,gt911&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x14&amp;gt;;&lt;br /&gt;
        interrupt-parent = &amp;lt;&amp;amp;pio&amp;gt;;&lt;br /&gt;
        interrupts = &amp;lt;4 10 IRQ_TYPE_EDGE_FALLING&amp;gt;; /* (PE10) */&lt;br /&gt;
        pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
        pinctrl-0 = &amp;lt;&amp;amp;ts_reset_pin&amp;gt;;&lt;br /&gt;
        irq-gpios = &amp;lt;&amp;amp;pio 4 10 GPIO_ACTIVE_HIGH&amp;gt;; /* (PE10) */&lt;br /&gt;
        reset-gpios = &amp;lt;&amp;amp;pio 4 9 GPIO_ACTIVE_HIGH&amp;gt;; /* RST (PE9) */&lt;br /&gt;
        /* touchscreen-swapped-x-y */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;pio {&lt;br /&gt;
    ts_reset_pin: ts_reset_pin@0 {&lt;br /&gt;
        pins = &amp;quot;PE9&amp;quot;;&lt;br /&gt;
        function = &amp;quot;gpio_out&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若测试的触摸屏的 xy 方向颠倒，请添加或去掉 gt911 节点下的 touchscreen-swapped-x-y 属性。&lt;br /&gt;
&lt;br /&gt;
[https://item.taobao.com/item.htm?spm=a230r.1.14.87.57863beca0zG7h&amp;amp;id=589629409888&amp;amp;ns=1&amp;amp;abbucket=8#detail iTop 4412]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 长条屏 ===&lt;br /&gt;
&lt;br /&gt;
* 4.58 inch, 320x960, ST7701S, SPI+RGB, 40.37x117.9x2.08mm, Display 36.77x110.3mm, 40pin, 3.3V power supply&lt;br /&gt;
** 非 RGB 直驱，需通过 ST7701 转驱。得事先配置了 ST7701 才能够通过 RGB 口驱动。&lt;br /&gt;
** ST7701一上电需要10s-20s来启动，上电后最好延时20s再启动配置&lt;br /&gt;
** [https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628 LittleVGL ST7701][https://www.nxpic.org.cn/module/forum/thread-622198-1-1.html 捡屏幕第一弹—5寸480x854 ST7701屏]&lt;br /&gt;
&lt;br /&gt;
驱动实例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//ST7701S+AUO4.58&lt;br /&gt;
SPI_WriteComm (0xFF);     &lt;br /&gt;
SPI_WriteData (0x77); &lt;br /&gt;
SPI_WriteData (0x01);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x13);   &lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4.95 inch, 480x854, ST7701, SPI+RGB, 65x119x2.08mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI TFT 屏 ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.cnblogs.com/twzy/p/15160836.html SPI TFT屏幕修改与移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ESP8089 ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/notabucketofspam/ESP8089-SPI&lt;br /&gt;
* https://github.com/al177/esp8089&lt;br /&gt;
* https://whycan.com/t_5870.html&lt;br /&gt;
* https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
dts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;spi1 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    esp8089@0 {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        compatible = &amp;quot;boss,esp8089&amp;quot;;&lt;br /&gt;
        spi-cpol;&lt;br /&gt;
        spi-cpha;&lt;br /&gt;
        reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
        spi-max-frequency = &amp;lt;30000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        reset= &amp;lt;104&amp;gt;;&lt;br /&gt;
        interrupt= &amp;lt;103&amp;gt;;&lt;br /&gt;
        debug= &amp;lt;0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB OTG ===&lt;br /&gt;
&lt;br /&gt;
'''驱动'''通过读取 USB_ID 的电平，来判断是 host 模式还是 device 模式。&lt;br /&gt;
&lt;br /&gt;
micro-USB 口： pin1 - vcc，pin4 - usb_id, pin5 - gnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB_ID 检测脚，在 dts 配置为 PE2，默认 active high&lt;br /&gt;
* 当检测脚为高电平时，'''驱动 (driver)'''驱使硬件进入 device mode&lt;br /&gt;
* 当检测脚为低电平时，'''驱动 (driver)'''驱使硬件进入 host mode&lt;br /&gt;
* TeslaDR（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 10K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* nano 板（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 47K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* 当把 MicroUSB 的 usb_id 脚拉低时，即将 PE2 拉低，驱动驱使硬件进入 host mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USB Hub chip: gl850/gl850g&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device Mode (USB Gadget) ====&lt;br /&gt;
&lt;br /&gt;
F1C 作为 USB 设备，连接到主机。如果是 Linux 主机需要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo modprobe rndis_host&lt;br /&gt;
$ ifconfig usb0 192.168.3.1 up&lt;br /&gt;
&lt;br /&gt;
maybe:&lt;br /&gt;
$ sudo ifconfig enp0s20f0u3 192.168.3.1 up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作为客户端的 F1C 则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://blog.csdn.net/lan120576664/article/details/101081608&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的spi-flash系统编译创建全过程]&lt;br /&gt;
* [https://www.lotlab.org/2018/07/29/record-of-using-licheepi-part-2-using-linux-gadget/ 使用 Linux Gadget 复合设备共享网络与虚拟串口]&lt;br /&gt;
* [https://whycan.com/t_2889.html LicheePi Nano Usb复合设备RNDIS功能问题]&lt;br /&gt;
* [http://www.iipcb.com/blog/F1C100S_USB_DriverDebug1.html USB 裸机驱动]&lt;br /&gt;
&lt;br /&gt;
* https://irq5.io/2016/12/22/raspberry-pi-zero-as-multiple-usb-gadgets/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB 条码枪  ===&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_3963.html&lt;br /&gt;
* [https://whycan.com/t_6902.html 编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Serial ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_USB_SERIAL=y&lt;br /&gt;
CONFIG_USB_SERIAL_CH341=m&lt;br /&gt;
CONFIG_USB_SERIAL_CP210X=m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CH341 lsusb: 0x1a86:7523  (drivers/usb/serial/ch341.c)&lt;br /&gt;
* CP210x lsusb:  (drivers/usb/serial/cp210x.c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4G ===&lt;br /&gt;
&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
* [http://oldask.openluat.com/article/37 Air720模块Linux USB驱动以及PPP拨号说明]&lt;br /&gt;
* [http://oldask.openluat.com/article/79 Air720模块在linux设备上的RNDIS网卡使用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://wiki.jackslab.org/EMTC#AT Air724 AT 接口]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
入网不成功，可能导致枚举 usb 设备失败:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    7.780813] usb 1-1: new high-speed USB device number 2 using musb-hdrc&lt;br /&gt;
[    7.940764] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.210885] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.480803] usb 1-1: new high-speed USB device number 3 using musb-hdrc&lt;br /&gt;
[    8.630701] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.900700] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    9.020862] usb usb1-port1: attempt power cycle&lt;br /&gt;
[    9.510701] usb 1-1: new high-speed USB device number 4 using musb-hdrc&lt;br /&gt;
[    9.950713] usb 1-1: device not accepting address 4, error -71&lt;br /&gt;
[   10.100707] usb 1-1: new high-speed USB device number 5 using musb-hdrc&lt;br /&gt;
[   10.540723] usb 1-1: device not accepting address 5, error -71&lt;br /&gt;
[   10.546757] usb usb1-port1: unable to enumerate USB device&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
去除 sim 卡一样的错误 log，插入一个新卡一样，换 4G sim 卡一样的现象&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&lt;br /&gt;
ESP8266 接线：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
F1C200S			ESP8266Ex				ESP-12F&lt;br /&gt;
SPI_MOSI		SDIO_CMD(GPIO 11)		ESP_CS&lt;br /&gt;
SPI_MISO		SDIO_DATA_0(GPIO 7)		ESP_MISO&lt;br /&gt;
SPI_CLK			SDIO_CLK(GPIO 6)		ESP_CLK&lt;br /&gt;
WIFI_RESET(PD16/IO8)	CHOP_PU					ESP_EN(RST)&lt;br /&gt;
&lt;br /&gt;
SPI_CS			SDIO_DATA_3(GPIO 10)	ESP_GPIO10&lt;br /&gt;
WiFi_INT(PD18)	SDIO_DATA_1(GPIO 8)		ESP_MOSI&lt;br /&gt;
&lt;br /&gt;
精简 PIN，则：SDIO_DATA_3 (12F_GPIO10, SPI-CS) 拉低、SDIO_DATA_1 (12F_MOSI, WiFi_INT) 悬空&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot select:'''&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO15 (MTDO)&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO0&lt;br /&gt;
* GND &amp;lt;--- ESP8266_GPIO2&lt;br /&gt;
&lt;br /&gt;
ESP8266 Reset 后，通过判断如下管脚的状态来决定启动模式：  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MTDO 	GPIO0 	GPIO2 	Mode 	Description&lt;br /&gt;
L 	L 	H 	UART 	串口刷机&lt;br /&gt;
L 	H 	H 	Flash 	SPI Flash 正常启动&lt;br /&gt;
H 	x 	x 	SDIO 	SD-card 启动&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTDO 为 GPIO15&lt;br /&gt;
&lt;br /&gt;
启动时串口输出的 'boot mode:(x, y)' ， x 的低三位对应  {MTDO, GPIO0, GPIO2}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_2179.html  RTL8189 / rtl8723bs&lt;br /&gt;
* https://whycan.com/t_4149.html ESP8089 https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# ls -l /usr/lib/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3.19.13&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200.26.0&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200.26.0&lt;br /&gt;
# ls -l /usr/sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        296866 Jan  1  1970 wpa_cli&lt;br /&gt;
-rwx------    1 root     root        185953 Jan  1  1970 wpa_passphrase&lt;br /&gt;
-rwx------    1 root     root       9471254 Jan  1  1970 wpa_supplicant&lt;br /&gt;
# ls -l /sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwconfig&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwgetid&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwlist&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwpriv&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwspy&lt;br /&gt;
# ls -l /etc/ | grep 1970&lt;br /&gt;
-rw-------    1 root     root            96 Jan  1  1970 wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nginx:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep nginx&lt;br /&gt;
output/target/usr/sbin/nginx&lt;br /&gt;
output/target/etc/nginx&lt;br /&gt;
output/target/etc/nginx/win-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf&lt;br /&gt;
output/target/etc/nginx/mime.types&lt;br /&gt;
output/target/etc/nginx/koi-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi_params.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf.default&lt;br /&gt;
output/target/etc/nginx/fastcgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params&lt;br /&gt;
output/target/etc/nginx/uwsgi_params.default&lt;br /&gt;
output/target/etc/nginx/mime.types.default&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf&lt;br /&gt;
output/target/etc/nginx/uwsgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params.default&lt;br /&gt;
output/target/etc/nginx/koi-win&lt;br /&gt;
output/target/etc/init.d/S50nginx&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre&lt;br /&gt;
output/target/usr/lib/libpcre.a&lt;br /&gt;
output/target/usr/lib/libpcre.so&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcreposix.a&lt;br /&gt;
output/target/usr/lib/libpcreposix.so&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0.0.7&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcrecpp.a&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0.0.2&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/usr | grep html | grep -v pcre&lt;br /&gt;
output/target/usr/html/50x.html&lt;br /&gt;
output/target/usr/html/index.html&lt;br /&gt;
&lt;br /&gt;
$ scp -r output/target/usr/sbin/nginx root@192.168.1.204:/usr/sbin/&lt;br /&gt;
$ scp output/target/usr/lib/libpcre.so.1* root@192.168.1.204:/lib/&lt;br /&gt;
libpcre.so.1                                                                                               &lt;br /&gt;
libpcre.so.1.2.12 &lt;br /&gt;
$ scp -r output/target/etc/nginx root@192.168.1.204:/etc/&lt;br /&gt;
$ scp -r output/target/etc/init.d/S50nginx  root@192.168.1.204:/etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
CAN Gateway: https://whycan.com/t_6980.html&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/lushengchu_luis/article/details/77099239&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/a13698709128/article/details/104484467&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/weixin_59676688/article/details/124457092&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 摄像头 ==&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_5612.html 分享F1C100S的TVD源码，TVIN0接CVBS摄像头采集数据显示到LCD屏]&lt;br /&gt;
* [https://whycan.com/t_6902.html 站在微凉大侠的肩膀上，编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
* [https://whycan.com/t_2667.html 荔枝派zero 摄像头ov2640咸鱼使用（踩坑） 持续更新]&lt;br /&gt;
* [https://whycan.com/t_5327.html F1C200S使用OV2640拍照]&lt;br /&gt;
* [https://whycan.com/t_4056.html f1c100s的引脚怎么接csi摄像头]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 7.2-2017.11) 7.2.1 20171011&lt;br /&gt;
Copyright (C) 2017 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install python-setuptools&lt;br /&gt;
$ git clone https://github.com/Lichee-Pi/u-boot.git&lt;br /&gt;
$ cd u-boot&lt;br /&gt;
# 切换到 Nano 分支&lt;br /&gt;
$ git checkout nano-v2018.01&lt;br /&gt;
&lt;br /&gt;
# 设定各项默认配置为 nano 的spiflash支持版，若不带spi-flash的板子，请换成 licheepi_nano_defconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sunxi-tools ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git&lt;br /&gt;
$ cd sunxi-tools&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果出现：fel_lib.c:26:20: fatal error: libusb.h: No such file or directory，那需要安装libusb：&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libusb-1.0-0-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
新到的一片 F1C 设备 Nor/Nand/SD 卡 都无系统，则自动进入 fel 模式，可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 查看芯片信息&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
# FEL 模式失败&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
ERROR: Allwinner USB FEL device not found!&lt;br /&gt;
&lt;br /&gt;
# 列出所有芯片的信息&lt;br /&gt;
$ sudo sunxi-fel -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时有两种方式进行程序下载：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 1. 加载并运行之&lt;br /&gt;
$ sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin  # 单次运行&lt;br /&gt;
&lt;br /&gt;
# 2. 烧写入 spi-flash &lt;br /&gt;
$ sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 加载并执行 uboot 的 spl&lt;br /&gt;
$ sudo sunxi-fel spl [文件名]&lt;br /&gt;
&lt;br /&gt;
# 把文件内容写入内存指定地址(-p 是显示写入进度) &lt;br /&gt;
$ sudo sunxi-fel -p write [地址] [文件名]&lt;br /&gt;
&lt;br /&gt;
# 调用指定地址的函数&lt;br /&gt;
$ sudo sunxi-fel exec [地址]&lt;br /&gt;
&lt;br /&gt;
# 显示spiflash的信息&lt;br /&gt;
$ sudo sunxi-fel spiflash-info&lt;br /&gt;
&lt;br /&gt;
# 读取spiflash指定地址的数据并写入到文件&lt;br /&gt;
$ sudo sunxi-fel spiflash-read [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&lt;br /&gt;
# 写入指定文件的指定长度的内容到spiflash的指定地址&lt;br /&gt;
$ sudo sunxi-fel spiflash-write [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;如何进入 FEL mode：&amp;lt;/b&amp;gt; http://wiki.jackslab.org/F1C#FEL_mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
* http://nano.lichee.pro/build_sys/rootfs.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Buildroot ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget https://buildroot.org/downloads/buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ tar xvf buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ cd buildroot-2017.08/&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Buildroot Quick Start]]&lt;br /&gt;
&lt;br /&gt;
.config files: https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/buildroot.config&lt;br /&gt;
&lt;br /&gt;
快速添加一个 helloworld 包：http://www.chip-community.org/index.php/Startup_Program_with_Buildroot&lt;br /&gt;
&lt;br /&gt;
重 build 某个包：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-rebuild&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-dirclean&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-reinstall&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-source&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-show-depends&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-extract&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-staging&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-target&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-patch&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenWRT ====&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2573.html openwrt into spi-flash]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b licheepi-nano https://github.com/qinfengling/openwrt&lt;br /&gt;
cat &amp;gt; .config &amp;lt;&amp;lt; EOL&lt;br /&gt;
CONFIG_TARGET_sunxi=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9_DEVICE_suniv-f1c100s-licheepi-nano=y&lt;br /&gt;
CONFIG_DEVEL=y&lt;br /&gt;
CONFIG_BRCMFMAC_SDIO=y&lt;br /&gt;
CONFIG_BRCMFMAC_USB=y&lt;br /&gt;
CONFIG_DRIVER_11AC_SUPPORT=y&lt;br /&gt;
CONFIG_DRIVER_11N_SUPPORT=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_DEBUGFS=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_MESH=y&lt;br /&gt;
CONFIG_PACKAGE_brcmfmac-firmware-usb=y&lt;br /&gt;
CONFIG_PACKAGE_hostapd-common=y&lt;br /&gt;
CONFIG_PACKAGE_iw=y&lt;br /&gt;
CONFIG_PACKAGE_iwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-ahci-platform=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmfmac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmutil=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-cfg80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-libphy=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mac80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mmc=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-nls-base=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-of-mdio=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-rtc-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-scsi-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-sun4i-emac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-usb-core=y&lt;br /&gt;
CONFIG_PACKAGE_libiwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_swconfig=y&lt;br /&gt;
CONFIG_PACKAGE_wireless-regdb=y&lt;br /&gt;
CONFIG_PACKAGE_wpad-mini=y&lt;br /&gt;
CONFIG_SOFT_FLOAT=y&lt;br /&gt;
CONFIG_TARGET_OPTIONS=y&lt;br /&gt;
EOL&lt;br /&gt;
$ ./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;br /&gt;
$ make defconfig&lt;br /&gt;
$ make world&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/zhangheyang/openwrt&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* https://qinfengling.pro/build_openwrt_image_for_licheepi_nano.html&lt;br /&gt;
* [https://whycan.com/t_4279.html 尝试给f1c100s编译openwrt]&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的SPI-Flash系统编译创建全过程][https://whycan.com/t_2179.html 2]&lt;br /&gt;
* [[OpenWRT_Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig&lt;br /&gt;
&lt;br /&gt;
System configurration ---&amp;gt; [ ] Install timezone info&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/timezone&lt;br /&gt;
Etc/UTC&lt;br /&gt;
&lt;br /&gt;
$ ls -l /etc/localtime&lt;br /&gt;
/etc/localtime -&amp;gt; /usr/share/zoneinfo/Etc/UTC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deploy TF ===&lt;br /&gt;
&lt;br /&gt;
可以直接只用 TF 卡，分区时，前 3MB 留给 uboot 和 environments，第一个分区从 3MB 处开始&lt;br /&gt;
&lt;br /&gt;
'''给 U-Boot 的前 3MB:'''&lt;br /&gt;
&lt;br /&gt;
[[文件:F1c.tf.layout.png]]&lt;br /&gt;
&lt;br /&gt;
https://linux-sunxi.org/Bootable_SD_card&lt;br /&gt;
&lt;br /&gt;
需要将 uboot 写到 TF 卡 8KB 开始的位置&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''第一、二分区：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdX   # 进行分区操作&lt;br /&gt;
# 若已存分区即按 d 删除各个分区&lt;br /&gt;
# &lt;br /&gt;
# 通过 n 新建分区，第一分区16M，类型 c (W95 FAT32 LBA)，从 1MB 处 (start sector 2048) 开始，+16M；第二分区 +183M&lt;br /&gt;
# w 保存写入并退出&lt;br /&gt;
$ sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT&lt;br /&gt;
$ sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''第一分区：'''&lt;br /&gt;
* boot.scr    # u-boot 使用&lt;br /&gt;
* zImage&lt;br /&gt;
* suniv-f1c100s-licheepi-nano.dtb&lt;br /&gt;
&lt;br /&gt;
'''第二分区：'''&lt;br /&gt;
* 根文件系统内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''boot.scr 之生成：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat boot.cmd&lt;br /&gt;
setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw&lt;br /&gt;
load mmc 0:1 0x80C00000 suniv-f1c100s-ltegw.dtb&lt;br /&gt;
load mmc 0:1 0x80008000 zImage&lt;br /&gt;
bootz 0x80008000 - 0x80C00000&lt;br /&gt;
$ sudo apt install u-boot-tools&lt;br /&gt;
$ mkimage -C none -A arm -T script -d boot.cmd boot.scr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上电启动流程 ==&lt;br /&gt;
&lt;br /&gt;
After power-up, the F1C100s starts to fetch instructions from address '''0xFFFF_0000''' which is where the '''BROM''' is located at. It's an internal integrated 32 KB ROM Chip (Boot ROM or BROM).&lt;br /&gt;
&lt;br /&gt;
The BROM split up into two parts: The first part (at 0xFFFF_0000) is the '''FEL''' mode and the second is the '''eGON.BRM''' (located at 0xFFFF_4000).&lt;br /&gt;
&lt;br /&gt;
The reset vector is located at the very begining of FEL mode: at address 0xFFFF_0000. On reset, it jumps to 0xFFFF_0028 where it loads 0xFFFF_4000 (eGON.BRM) into the program counter to be executed next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== eGON Boot ===&lt;br /&gt;
&lt;br /&gt;
The eGON Boot ROM performs a few tasks:&lt;br /&gt;
&lt;br /&gt;
# do some [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L19 co-processor setup] ([http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbciiaf.html c15], (virtual) System Control Coprocessor).&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L23 disables] the WatchDog Timer&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L28 setups] CPU, AXI, AHB and APB0 clocks&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L34 enables] AHB Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L38 enables] APB0 Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L40 sets] the Stack Pointer to 32K&lt;br /&gt;
# then it [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L41 jumps] to [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L84 'boot'] which immediately [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L86 jumps to] [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot]&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot] setups up some registers, then [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2560 checks the status pin] (often called FEL pin, BSP pin or '''uboot''')&lt;br /&gt;
## if the pin is low (connected to GND) [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L90 executes] [[FEL]] mode at 0xFFFF_0020.&lt;br /&gt;
##  If the pin is high it continues trying to boot from the following media and on failure continues to the next in order.&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L91 SD Card0] also known as [[A10/CCM#CCM_MMC0_CLK|MMC0]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L98 Internal NAND flash] also known as [[A10/CCM#CCM_NAND_CLK|NAND]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L104 SD Card2] also known as [[A10/CCM#CCM_MMC2_CLK|MMC2]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L111 SPI connected NOR flash] also known as [[A10/CCM#CCM_SPI0_CLK|SPI]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s##L117 If all fails], '''FEL/USBBoot''' mode is [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L120 executed] from 0xFFFF_0020&lt;br /&gt;
&lt;br /&gt;
As can be seen, the SoC has several ways to boot and a lot would need to go wrong or 'fail' before entering FEL/USBBoot mode. This is especially important if there is a valid header in the NAND flash. Obviously this can be abused, by corrupting the header and thus forcing failure. If no other boot options are available, then FEL mode should be the final result. As a bypass mechanism, the A10 has the so called ''Boot Select Pin (BSP)''. This pin is normally internally pulled up by a 50KΩ resistor. If the pin is pulled low to GND, the A10 will try to boot into FEL/USBBoot mode. Otherwise the above boot-order will be tried.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
boot-&amp;gt; check fel key pressed (yes)--&amp;gt; FEL mode (boot from USB OTG)&lt;br /&gt;
                          \  &lt;br /&gt;
                      (no) \&lt;br /&gt;
                            \-------&amp;gt; 1) try to boot from SMHC0 (SD card)&lt;br /&gt;
                                      2) try to boot from SMHC2 (eMMC)&lt;br /&gt;
                                      3) try to boot from SPI0 (SPI NOR Flash)&lt;br /&gt;
                                      4) FEL mode (boot from USB OTG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  FEL mode ===&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F1C 无 Boot Select Pin 会依次尝试 MMC0 ---&amp;gt; NAND ---&amp;gt; MMC2 ---&amp;gt; NOR，如果启动都失败，就会进入 FEL mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方参考设计是将 PC2 短接到 GND 用了个按钮标记为 BOOT，PC2 所在的 SPI0 接的是 系统 eMMC，作为个 参考，PC2  =  SPI0_MISO = SDC1-D0，短接到 GND 即可使 eMMC 失效&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 短接 flash 的 1、4 两脚，重新上电，上电后松开短接，即可重新进入 fel 模式&lt;br /&gt;
* 在启动到内核前，回车进入 uboot，执行 sf probe 0;sf erase 0 0x100000;reset 即可重新进入 fel 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEL mode 下 PC 可用 sunxi-fei 工具通过 USB 口与 SoC 通信&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel uboot /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel -p spiflash-write 0 /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 下 erase flash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;gt; sf probe 0    # init flash device&lt;br /&gt;
&amp;gt; sf erase 0 0x100000    # erase 1MB flash&lt;br /&gt;
&amp;gt; reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
* http://linux-sunxi.org/FEL&lt;br /&gt;
* http://linux-sunxi.org/FEL/USBBoot&lt;br /&gt;
* http://linux-sunxi.org/BROM&lt;br /&gt;
* http://linux-sunxi.org/Sunxi-tools&lt;br /&gt;
* http://nano.lichee.pro/get_started/first_eat.html#id6&lt;br /&gt;
* [https://whycan.cn/t_717.html F1C100s入坑记录]&lt;br /&gt;
* [https://whycan.cn/t_3138.html 尝试从零构建F1C100s开发环境]&lt;br /&gt;
* https://whycan.com/t_2179.html spi-flash &amp;amp; wifi &amp;amp; usb-gad&lt;br /&gt;
* [https://whycan.com/t_6402.html &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot failed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# reboot&lt;br /&gt;
# Stopping network: OK&lt;br /&gt;
Saving random seed... done.&lt;br /&gt;
Stopping logging: OK&lt;br /&gt;
The system is going down NOW!&lt;br /&gt;
Sent SIGTERM to all processes&lt;br /&gt;
Sent SIGKILL to   20.550344 reboot: Restarting system&lt;br /&gt;
   21.549981 Reboot failed -- System halted&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原因：未使能看门狗。系统 Restart 时，是利用取消喂狗来触发看门狗超时，从而引发复位。&lt;br /&gt;
&lt;br /&gt;
修正： 内核配置时，选择 &lt;br /&gt;
&lt;br /&gt;
  Device Drivers → Watchdog Timer Support  → WatchDog Timer Driver Core 和 Allwinner SoCs watchdog support&lt;br /&gt;
&lt;br /&gt;
确保如下选项打开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_WATCHDOG=y&lt;br /&gt;
CONFIG_WATCHDOG_CORE=y&lt;br /&gt;
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y&lt;br /&gt;
CONFIG_SUNXI_WATCHDOG=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重新编译内核即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
* [http://linux-sunxi.org/images/b/ba/F1C100s_Datasheet_V1.0.pdf F1C100s Datasheet 2015]&lt;br /&gt;
* [http://dl.linux-sunxi.org/F1C100/Allwinner_F1C100_datasheet_20110331.pdf F1C100 Datasheet 2011]&lt;br /&gt;
* [https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf F1C600 User Manual]&lt;br /&gt;
* [http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf H3 Datasheet]&lt;br /&gt;
* [https://debugdump.com/files/20171005/13/Allwinner_V3s_Datasheet_V1.0.pdf V3S datasheet] [http://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf V3s datasheet]&lt;br /&gt;
&lt;br /&gt;
*  http://nano.lichee.pro&lt;br /&gt;
* http://tang.lichee.pro&lt;br /&gt;
&lt;br /&gt;
* [https://elinux.org/Device_Tree_Reference Device Tree]&lt;br /&gt;
* [http://nano.lichee.pro/build_sys/devicetree.html 设备树简介]&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_6402.html 自制基于F1C100s/F1C200s的M5Pi]&lt;br /&gt;
* [https://whycan.com/t_6388.html F1C100S开发了一个项目，原始技术实现，裸奔XUI GUI框架]&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2736.html 投屏软件scrcpy在Linux上的移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/F1C</id>
		<title>F1C</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/F1C"/>
				<updated>2026-03-10T07:36:08Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* Toolchain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Core overview ==&lt;br /&gt;
&lt;br /&gt;
* F1C100s / F1C200s&lt;br /&gt;
** USB 2.0 OTG, UART x3, SPI x2, TWI x3, &lt;br /&gt;
&lt;br /&gt;
* V831 &amp;lt;---&lt;br /&gt;
** USB 2.0 OTG, UART x4, SPI x2, TWI x4, GPIO x4&lt;br /&gt;
&lt;br /&gt;
* V851S (64MB), V851SE (64MB, SiP EPHY, no display),  V851S3 (128MB)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x6&lt;br /&gt;
&lt;br /&gt;
* V853 / V853s (LFBGA, no SiP RAM)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F1C100s Overview ==&lt;br /&gt;
&lt;br /&gt;
* ARM926-EJS, up to 900MHz&lt;br /&gt;
* 32KB I-Cache, 16KB D-Cache, 5-stage pipeline&lt;br /&gt;
* 32MB SiP DDR1 (F1C200s is 64MB SiP DDR1)&lt;br /&gt;
&lt;br /&gt;
* RGB LCD interface&lt;br /&gt;
* USB 2.0 OTG&lt;br /&gt;
* SDIO&lt;br /&gt;
* SPI x2 (SPI_SCLK: 3KHz ~ 100MHz)&lt;br /&gt;
* TWI x3&lt;br /&gt;
* UART x3&lt;br /&gt;
* TV out x 1, TV in x 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PWM x2&lt;br /&gt;
* LRADC x1&lt;br /&gt;
* Speaker x2 + Mic x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-blockdiagram.jpg | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-typical-app.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C-roadmap.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-pinmap.jpg | 650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 荔枝派 Pin Map ===&lt;br /&gt;
&lt;br /&gt;
[[文件:Lichee-nano-pin-map.png]]&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** UART0_RX --- PE0&lt;br /&gt;
** UART0_TX --- PE1&lt;br /&gt;
** dtb 中默认系统启动的串口 serial0:115200n8&lt;br /&gt;
** UART1_RX --- PD3 --- D5&lt;br /&gt;
** UART1_TX --- PD4 --- D6&lt;br /&gt;
** UART2_RX --- PD14 --- D20&lt;br /&gt;
** UART2_TX --- PD13 --- D19&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SPI1&lt;br /&gt;
** PA0 - SPI1_CS&lt;br /&gt;
** PA1 - SPI1_MOSI&lt;br /&gt;
** PA2 - SPI1_SCK&lt;br /&gt;
** PA3 - SPI1_MISO&lt;br /&gt;
** PE3 -- Reset -- D0&lt;br /&gt;
** PE4 -- Interrupt -- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB&lt;br /&gt;
** 右上角，PCLK 右边为 USB_DM (D-)&lt;br /&gt;
** 右上角，PCLK 左边为 USB_DP (D+)&lt;br /&gt;
** USB_ID，拉低为主机模式，拉高为设备模式。Nano 开发板将 USB_ID 47K 上拉到 3V3，同时 USB_ID 和 PE2 相连。dts 设置使用 PE2 作为检测管脚（默认 active high，即：高电平）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进入系统后，可通过改变 PE2 的高低电平来控制 USB 的模式。比如默认 dtb 设置 PE2 为 active high，则进系统后，设置 PE2 为低电平，则 USB 会切换为主机模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I2C0&lt;br /&gt;
** PE11 --- SCL&lt;br /&gt;
** PE12 --- SDA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* GPIO&lt;br /&gt;
** PE3 --- D0&lt;br /&gt;
** PE4 --- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/Lichee_nano.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
* Power&lt;br /&gt;
** VCC-CORE: 1.0 - 1.2V&lt;br /&gt;
** VCC-DRAM: 2.3 - 2.7V&lt;br /&gt;
** AVCC: 2.5 - 3.1V&lt;br /&gt;
** VCC-IO: 3.0 - 3.6V&lt;br /&gt;
** VCC-HP: 3.0 - 3.5V&lt;br /&gt;
** VCC-TV: 3.0 - 3.5V&lt;br /&gt;
** VCC-USB: 3.0 - 3.5V&lt;br /&gt;
&lt;br /&gt;
* SIP DDR1&lt;br /&gt;
** SVREF (P33) &lt;br /&gt;
&lt;br /&gt;
* 音频&lt;br /&gt;
** HPL, HPR 左右声道；HPCOM, HPCOMFP 接耳机插座&lt;br /&gt;
** LINEIN：可用于连接电吉他、电子琴、合成器等外界设备的音频信号，由于这些设备本身输出功率就比较大，因此需要连接到 Line in 端口录音，当然使用它们录音从某种程度上也可以被称为外部设备的“内录”。一般您使用的声卡越好，Line in里的噪音就会越低，录制效果也会比较好。&lt;br /&gt;
** MICIN：用于连接麦克风，和 Line in 的区别在于它有前置放大器，麦克风本身输出功率小，因此必须要有一个放大设备来放大音频信号&lt;br /&gt;
** VRA1, VRA2, FMINL, FMINR&lt;br /&gt;
&lt;br /&gt;
* TV&lt;br /&gt;
** TV_OUT&lt;br /&gt;
** TV_VRN, TV_VRP, TVIN1, TVIN0&lt;br /&gt;
&lt;br /&gt;
* KEY INPUT&lt;br /&gt;
** LRADC0: 6bit resolution; 0 - 2V, 250Hz; 3.0/2^6 = 0.047&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PE11 CLK Out ==&lt;br /&gt;
&lt;br /&gt;
PE11 管脚可以输出 clkout，给 CIF 摄像头的提供时钟源，节约成本&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;clk-mux@0x01c000f0&amp;quot;: {&lt;br /&gt;
		&amp;quot;parent&amp;quot;: [&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;losc&amp;quot;, &amp;quot;value&amp;quot;: 0 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;osc32k&amp;quot;, &amp;quot;value&amp;quot;: 1 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;hosc&amp;quot;, &amp;quot;value&amp;quot;: 2 }&lt;br /&gt;
		],&lt;br /&gt;
		&amp;quot;name&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 24, &amp;quot;width&amp;quot;: 2,&lt;br /&gt;
		&amp;quot;default&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;hosc&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;clk-ratio@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 20, &amp;quot;width&amp;quot;: 2, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-divider@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 8, &amp;quot;width&amp;quot;: 5, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-gate@0x01c000f0&amp;quot;: {&amp;quot;parent&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 31, &amp;quot;invert&amp;quot;: false, &amp;quot;default&amp;quot;: { &amp;quot;enable&amp;quot;: false } },&lt;br /&gt;
	&amp;quot;clk-link&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;link-clkout&amp;quot; },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可输出24MHZ，12MHZ，6MHZ。。。&lt;br /&gt;
&lt;br /&gt;
参考 patch: https://gitee.com/xboot/xboot/commit/245601d534de73748a37f05531ff7a11bdc0545c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
调试消息控制台设置：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
0 = KERN_EMERG      /* 系统即将崩溃 */&lt;br /&gt;
1 = KERN_ALERT      /* 需要立即关注 */&lt;br /&gt;
2 = KERN_CRIT       /* 紧急情况 */&lt;br /&gt;
3 = KERN_ERR        /* 错误消息 */&lt;br /&gt;
4 = KERN_WARNING    /* 警告消息 */&lt;br /&gt;
5 = KERN_NOTICE     /* 正常但需要注意 */&lt;br /&gt;
6 = KERN_INFO       /* 信息性消息 */&lt;br /&gt;
7 = KERN_DEBUG      /* 调试消息 */&lt;br /&gt;
&lt;br /&gt;
# 设置控制台级别&lt;br /&gt;
echo 6 &amp;gt; /proc/sys/kernel/printk        # 只显示 0-6 级别的消息&lt;br /&gt;
echo 8 &amp;gt; /proc/sys/kernel/printk        # 显示更多调试信息&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/printk        # 只显示紧急消息&lt;br /&gt;
&lt;br /&gt;
dmesg -n 8  # 效果同 echo 8 &amp;gt; /proc/sys/kernel/printk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone https://github.com/Icenowy/linux.git&lt;br /&gt;
&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
# 添加下面两行&lt;br /&gt;
192.30.253.112  github.com&lt;br /&gt;
151.101.73.194 github.global.ssl.fastly.net&lt;br /&gt;
&lt;br /&gt;
# 可自行通过dns检测网站检测github.global.ssl.fastly.net，更换为更快的ip地址&lt;br /&gt;
# 完整拉取linux极大，建议只拉取单层分支，减少等待时间：&lt;br /&gt;
$ git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.config: http://dl.sipeed.com/LICHEE/Nano/SDK/config    http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm menuconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8    #请自行修改编译线程数&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
arch/arm/boot/dts/suniv.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s-tesladr.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''arch/arm/boot/dts/Makefile:'''&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
dtb-$(CONFIG_MACH_SUNIV) += \&lt;br /&gt;
    suniv-f1c100s-ltegw.dtb \&lt;br /&gt;
    suniv-f1c100s-tesladr.dtb&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
查看 DTS 中对应的设备用了哪些关键字：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ grep -r of_property drivers/spi/ | grep spi-max-frequency&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SPI:'''&lt;br /&gt;
&lt;br /&gt;
SPI_SCLK: 3KHz ~ 100MHz&lt;br /&gt;
* SPI Nor Flash: spi-max-frequency = &amp;lt;50000000&amp;gt;; (50MHz)&lt;br /&gt;
* SPI 127x: spi-max-frequency = &amp;lt;10000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# CONFIG_SPI_SUN4I is not set&lt;br /&gt;
CONFIG_SPI_SUN6I=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
drivers/spi/spi-bitbang.o&lt;br /&gt;
drivers/spi/spidev.o&lt;br /&gt;
drivers/spi/spi-gpio.o&lt;br /&gt;
drivers/spi/spi.o&lt;br /&gt;
drivers/spi/spi-sun6i.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 leds {&lt;br /&gt;
             compatible = &amp;quot;gpio-leds&amp;quot;;&lt;br /&gt;
             blue_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:blue:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 4 GPIO_ACTIVE_LOW&amp;gt;; /* PE4 */&lt;br /&gt;
             };&lt;br /&gt;
             green_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:green:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 5 GPIO_ACTIVE_LOW&amp;gt;; /* PE5 */&lt;br /&gt;
                     default-state = &amp;quot;on&amp;quot;;&lt;br /&gt;
             };&lt;br /&gt;
             red_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:red:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 5 6 GPIO_ACTIVE_LOW&amp;gt;; /* PE6 */&lt;br /&gt;
             };&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
命令行方式：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat gpio.sh&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
if [ ! -e /sys/class/gpio/gpio$1 ]; then&lt;br /&gt;
    echo $1 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio$1/direction&lt;br /&gt;
echo $2 &amp;gt; /sys/class/gpio/gpio$1/value&lt;br /&gt;
&lt;br /&gt;
$ ./gpio.sh 105 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# A: 0&lt;br /&gt;
# B: 1&lt;br /&gt;
# C: 2&lt;br /&gt;
# D: 3&lt;br /&gt;
# E: 4&lt;br /&gt;
 * PB5 = 32*1 + 5 = 37&lt;br /&gt;
 * PC6= 32*2 + 6 = 70&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * PB5 = 32*1 + 5&lt;br /&gt;
 * PC6= 32*2 + 6&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
*/&lt;br /&gt;
gpio_direction_output(105, 0);     // 设置 PD9 为输出状态, 默认输出低电平&lt;br /&gt;
gpio_set_value(105, 1);                // 高电平&lt;br /&gt;
gpio_set_value(105, 0);                // 低电平&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
* pcf8563: 0x51&lt;br /&gt;
* sht3x: 0x44 / 0x45&lt;br /&gt;
* sht2x: 0x40&lt;br /&gt;
* sts3x: 0x4A / 0x4B&lt;br /&gt;
* pc10: 0x28&lt;br /&gt;
* pc10nsa: 0x6D&lt;br /&gt;
* pcz1: 0x28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TeslaDR:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        /* 在 pio 节点下，添加 i2c 引脚定义 */&lt;br /&gt;
        i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PE11&amp;quot;, &amp;quot;PE12&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M6:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
            i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PD12&amp;quot;, &amp;quot;PD0&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
            };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        i2c0: i2c@1C27000 {&lt;br /&gt;
            compatible = &amp;quot;allwinner,sun6i-a31-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x01C27000 0x400&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;7&amp;gt;;&lt;br /&gt;
            clocks = &amp;lt;&amp;amp;ccu CLK_BUS_I2C0&amp;gt;;&lt;br /&gt;
            resets = &amp;lt;&amp;amp;ccu RST_BUS_I2C0&amp;gt;;&lt;br /&gt;
            pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
            pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
            #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
            #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCL 和 SDA 必须 10K / 1K 拉高，否则 kernel 启动时会报：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    0.972082] i2c /dev entries driver&lt;br /&gt;
[    3.044909] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pcf8563@0x51:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# i2cdetect -y 0&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
常用命令：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@autoeco:~/f1c/linux$ date +%s -u&lt;br /&gt;
1758617972&lt;br /&gt;
&lt;br /&gt;
# date -s @1758617972&lt;br /&gt;
Tue Sep 23 08:59:32 UTC 2025&lt;br /&gt;
&lt;br /&gt;
# hwclock -r&lt;br /&gt;
[  369.265193] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.&lt;br /&gt;
hwclock: RTC_RD_TIME: Invalid argument&lt;br /&gt;
# hwclock -w&lt;br /&gt;
# hwclock -r&lt;br /&gt;
Tue Sep 23 08:59:59 2025  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LRADC ===&lt;br /&gt;
&lt;br /&gt;
* KEYADC_BaseAddr: 0x01C2 3400&lt;br /&gt;
* KEYADC_Ctrl_Reg: +0x00&lt;br /&gt;
* KEYADC_IntCtrl_Reg: +0x04&lt;br /&gt;
* KEYADC_IntStatus_Reg: +0x08&lt;br /&gt;
* KEYADC_Data_Reg: +0x0C&lt;br /&gt;
&lt;br /&gt;
* 6 位分辨率，检测电压范围 0~2V&lt;br /&gt;
* 最高 250Hz 采样率&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此 0 对应 0V，63 对应 2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取 4.2V 的电池电压，应采用 1% 的电阻分压，推荐 Vbat - 330K - 300K - GND，LRADC 测 300K 电阻的两端电压：&lt;br /&gt;
* 300/630 * 4.2 = 1.999&lt;br /&gt;
* 300/630 * 2.75 = 1.31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 电容触摸屏的支持 ===&lt;br /&gt;
&lt;br /&gt;
电容触摸屏的控制芯片为 GT911 使用 I2C 接口，我们要在 suniv-f1c100s-*.dts 文件中添加节点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/input/input.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/interrupt-controller/irq.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* 添加引用 */&lt;br /&gt;
&amp;amp;i2c0 {&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    gt911: touchscreen@14 {&lt;br /&gt;
        compatible = &amp;quot;goodix,gt911&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x14&amp;gt;;&lt;br /&gt;
        interrupt-parent = &amp;lt;&amp;amp;pio&amp;gt;;&lt;br /&gt;
        interrupts = &amp;lt;4 10 IRQ_TYPE_EDGE_FALLING&amp;gt;; /* (PE10) */&lt;br /&gt;
        pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
        pinctrl-0 = &amp;lt;&amp;amp;ts_reset_pin&amp;gt;;&lt;br /&gt;
        irq-gpios = &amp;lt;&amp;amp;pio 4 10 GPIO_ACTIVE_HIGH&amp;gt;; /* (PE10) */&lt;br /&gt;
        reset-gpios = &amp;lt;&amp;amp;pio 4 9 GPIO_ACTIVE_HIGH&amp;gt;; /* RST (PE9) */&lt;br /&gt;
        /* touchscreen-swapped-x-y */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;pio {&lt;br /&gt;
    ts_reset_pin: ts_reset_pin@0 {&lt;br /&gt;
        pins = &amp;quot;PE9&amp;quot;;&lt;br /&gt;
        function = &amp;quot;gpio_out&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若测试的触摸屏的 xy 方向颠倒，请添加或去掉 gt911 节点下的 touchscreen-swapped-x-y 属性。&lt;br /&gt;
&lt;br /&gt;
[https://item.taobao.com/item.htm?spm=a230r.1.14.87.57863beca0zG7h&amp;amp;id=589629409888&amp;amp;ns=1&amp;amp;abbucket=8#detail iTop 4412]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 长条屏 ===&lt;br /&gt;
&lt;br /&gt;
* 4.58 inch, 320x960, ST7701S, SPI+RGB, 40.37x117.9x2.08mm, Display 36.77x110.3mm, 40pin, 3.3V power supply&lt;br /&gt;
** 非 RGB 直驱，需通过 ST7701 转驱。得事先配置了 ST7701 才能够通过 RGB 口驱动。&lt;br /&gt;
** ST7701一上电需要10s-20s来启动，上电后最好延时20s再启动配置&lt;br /&gt;
** [https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628 LittleVGL ST7701][https://www.nxpic.org.cn/module/forum/thread-622198-1-1.html 捡屏幕第一弹—5寸480x854 ST7701屏]&lt;br /&gt;
&lt;br /&gt;
驱动实例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//ST7701S+AUO4.58&lt;br /&gt;
SPI_WriteComm (0xFF);     &lt;br /&gt;
SPI_WriteData (0x77); &lt;br /&gt;
SPI_WriteData (0x01);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x13);   &lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4.95 inch, 480x854, ST7701, SPI+RGB, 65x119x2.08mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI TFT 屏 ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.cnblogs.com/twzy/p/15160836.html SPI TFT屏幕修改与移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ESP8089 ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/notabucketofspam/ESP8089-SPI&lt;br /&gt;
* https://github.com/al177/esp8089&lt;br /&gt;
* https://whycan.com/t_5870.html&lt;br /&gt;
* https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
dts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;spi1 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    esp8089@0 {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        compatible = &amp;quot;boss,esp8089&amp;quot;;&lt;br /&gt;
        spi-cpol;&lt;br /&gt;
        spi-cpha;&lt;br /&gt;
        reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
        spi-max-frequency = &amp;lt;30000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        reset= &amp;lt;104&amp;gt;;&lt;br /&gt;
        interrupt= &amp;lt;103&amp;gt;;&lt;br /&gt;
        debug= &amp;lt;0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB OTG ===&lt;br /&gt;
&lt;br /&gt;
'''驱动'''通过读取 USB_ID 的电平，来判断是 host 模式还是 device 模式。&lt;br /&gt;
&lt;br /&gt;
micro-USB 口： pin1 - vcc，pin4 - usb_id, pin5 - gnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB_ID 检测脚，在 dts 配置为 PE2，默认 active high&lt;br /&gt;
* 当检测脚为高电平时，'''驱动 (driver)'''驱使硬件进入 device mode&lt;br /&gt;
* 当检测脚为低电平时，'''驱动 (driver)'''驱使硬件进入 host mode&lt;br /&gt;
* TeslaDR（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 10K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* nano 板（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 47K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* 当把 MicroUSB 的 usb_id 脚拉低时，即将 PE2 拉低，驱动驱使硬件进入 host mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USB Hub chip: gl850/gl850g&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device Mode (USB Gadget) ====&lt;br /&gt;
&lt;br /&gt;
F1C 作为 USB 设备，连接到主机。如果是 Linux 主机需要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo modprobe rndis_host&lt;br /&gt;
$ ifconfig usb0 192.168.3.1 up&lt;br /&gt;
&lt;br /&gt;
maybe:&lt;br /&gt;
$ sudo ifconfig enp0s20f0u3 192.168.3.1 up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作为客户端的 F1C 则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://blog.csdn.net/lan120576664/article/details/101081608&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的spi-flash系统编译创建全过程]&lt;br /&gt;
* [https://www.lotlab.org/2018/07/29/record-of-using-licheepi-part-2-using-linux-gadget/ 使用 Linux Gadget 复合设备共享网络与虚拟串口]&lt;br /&gt;
* [https://whycan.com/t_2889.html LicheePi Nano Usb复合设备RNDIS功能问题]&lt;br /&gt;
* [http://www.iipcb.com/blog/F1C100S_USB_DriverDebug1.html USB 裸机驱动]&lt;br /&gt;
&lt;br /&gt;
* https://irq5.io/2016/12/22/raspberry-pi-zero-as-multiple-usb-gadgets/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB 条码枪  ===&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_3963.html&lt;br /&gt;
* [https://whycan.com/t_6902.html 编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Serial ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_USB_SERIAL=y&lt;br /&gt;
CONFIG_USB_SERIAL_CH341=m&lt;br /&gt;
CONFIG_USB_SERIAL_CP210X=m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CH341 lsusb: 0x1a86:7523  (drivers/usb/serial/ch341.c)&lt;br /&gt;
* CP210x lsusb:  (drivers/usb/serial/cp210x.c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4G ===&lt;br /&gt;
&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
* [http://oldask.openluat.com/article/37 Air720模块Linux USB驱动以及PPP拨号说明]&lt;br /&gt;
* [http://oldask.openluat.com/article/79 Air720模块在linux设备上的RNDIS网卡使用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://wiki.jackslab.org/EMTC#AT Air724 AT 接口]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
入网不成功，可能导致枚举 usb 设备失败:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    7.780813] usb 1-1: new high-speed USB device number 2 using musb-hdrc&lt;br /&gt;
[    7.940764] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.210885] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.480803] usb 1-1: new high-speed USB device number 3 using musb-hdrc&lt;br /&gt;
[    8.630701] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.900700] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    9.020862] usb usb1-port1: attempt power cycle&lt;br /&gt;
[    9.510701] usb 1-1: new high-speed USB device number 4 using musb-hdrc&lt;br /&gt;
[    9.950713] usb 1-1: device not accepting address 4, error -71&lt;br /&gt;
[   10.100707] usb 1-1: new high-speed USB device number 5 using musb-hdrc&lt;br /&gt;
[   10.540723] usb 1-1: device not accepting address 5, error -71&lt;br /&gt;
[   10.546757] usb usb1-port1: unable to enumerate USB device&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
去除 sim 卡一样的错误 log，插入一个新卡一样，换 4G sim 卡一样的现象&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&lt;br /&gt;
ESP8266 接线：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
F1C200S			ESP8266Ex				ESP-12F&lt;br /&gt;
SPI_MOSI		SDIO_CMD(GPIO 11)		ESP_CS&lt;br /&gt;
SPI_MISO		SDIO_DATA_0(GPIO 7)		ESP_MISO&lt;br /&gt;
SPI_CLK			SDIO_CLK(GPIO 6)		ESP_CLK&lt;br /&gt;
WIFI_RESET(PD16/IO8)	CHOP_PU					ESP_EN(RST)&lt;br /&gt;
&lt;br /&gt;
SPI_CS			SDIO_DATA_3(GPIO 10)	ESP_GPIO10&lt;br /&gt;
WiFi_INT(PD18)	SDIO_DATA_1(GPIO 8)		ESP_MOSI&lt;br /&gt;
&lt;br /&gt;
精简 PIN，则：SDIO_DATA_3 (12F_GPIO10, SPI-CS) 拉低、SDIO_DATA_1 (12F_MOSI, WiFi_INT) 悬空&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot select:'''&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO15 (MTDO)&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO0&lt;br /&gt;
* GND &amp;lt;--- ESP8266_GPIO2&lt;br /&gt;
&lt;br /&gt;
ESP8266 Reset 后，通过判断如下管脚的状态来决定启动模式：  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MTDO 	GPIO0 	GPIO2 	Mode 	Description&lt;br /&gt;
L 	L 	H 	UART 	串口刷机&lt;br /&gt;
L 	H 	H 	Flash 	SPI Flash 正常启动&lt;br /&gt;
H 	x 	x 	SDIO 	SD-card 启动&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTDO 为 GPIO15&lt;br /&gt;
&lt;br /&gt;
启动时串口输出的 'boot mode:(x, y)' ， x 的低三位对应  {MTDO, GPIO0, GPIO2}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_2179.html  RTL8189 / rtl8723bs&lt;br /&gt;
* https://whycan.com/t_4149.html ESP8089 https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# ls -l /usr/lib/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3.19.13&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200.26.0&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200.26.0&lt;br /&gt;
# ls -l /usr/sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        296866 Jan  1  1970 wpa_cli&lt;br /&gt;
-rwx------    1 root     root        185953 Jan  1  1970 wpa_passphrase&lt;br /&gt;
-rwx------    1 root     root       9471254 Jan  1  1970 wpa_supplicant&lt;br /&gt;
# ls -l /sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwconfig&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwgetid&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwlist&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwpriv&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwspy&lt;br /&gt;
# ls -l /etc/ | grep 1970&lt;br /&gt;
-rw-------    1 root     root            96 Jan  1  1970 wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nginx:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep nginx&lt;br /&gt;
output/target/usr/sbin/nginx&lt;br /&gt;
output/target/etc/nginx&lt;br /&gt;
output/target/etc/nginx/win-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf&lt;br /&gt;
output/target/etc/nginx/mime.types&lt;br /&gt;
output/target/etc/nginx/koi-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi_params.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf.default&lt;br /&gt;
output/target/etc/nginx/fastcgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params&lt;br /&gt;
output/target/etc/nginx/uwsgi_params.default&lt;br /&gt;
output/target/etc/nginx/mime.types.default&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf&lt;br /&gt;
output/target/etc/nginx/uwsgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params.default&lt;br /&gt;
output/target/etc/nginx/koi-win&lt;br /&gt;
output/target/etc/init.d/S50nginx&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre&lt;br /&gt;
output/target/usr/lib/libpcre.a&lt;br /&gt;
output/target/usr/lib/libpcre.so&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcreposix.a&lt;br /&gt;
output/target/usr/lib/libpcreposix.so&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0.0.7&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcrecpp.a&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0.0.2&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/usr | grep html | grep -v pcre&lt;br /&gt;
output/target/usr/html/50x.html&lt;br /&gt;
output/target/usr/html/index.html&lt;br /&gt;
&lt;br /&gt;
$ scp -r output/target/usr/sbin/nginx root@192.168.1.204:/usr/sbin/&lt;br /&gt;
$ scp output/target/usr/lib/libpcre.so.1* root@192.168.1.204:/lib/&lt;br /&gt;
libpcre.so.1                                                                                               &lt;br /&gt;
libpcre.so.1.2.12 &lt;br /&gt;
$ scp -r output/target/etc/nginx root@192.168.1.204:/etc/&lt;br /&gt;
$ scp -r output/target/etc/init.d/S50nginx  root@192.168.1.204:/etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
CAN Gateway: https://whycan.com/t_6980.html&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/lushengchu_luis/article/details/77099239&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/a13698709128/article/details/104484467&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/weixin_59676688/article/details/124457092&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 摄像头 ==&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_5612.html 分享F1C100S的TVD源码，TVIN0接CVBS摄像头采集数据显示到LCD屏]&lt;br /&gt;
* [https://whycan.com/t_6902.html 站在微凉大侠的肩膀上，编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
* [https://whycan.com/t_2667.html 荔枝派zero 摄像头ov2640咸鱼使用（踩坑） 持续更新]&lt;br /&gt;
* [https://whycan.com/t_5327.html F1C200S使用OV2640拍照]&lt;br /&gt;
* [https://whycan.com/t_4056.html f1c100s的引脚怎么接csi摄像头]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&lt;br /&gt;
$ ./bin/arm-linux-gnueabi-gcc --version&lt;br /&gt;
arm-linux-gnueabi-gcc (Linaro GCC 7.2-2017.11) 7.2.1 20171011&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install python-setuptools&lt;br /&gt;
$ git clone https://github.com/Lichee-Pi/u-boot.git&lt;br /&gt;
$ cd u-boot&lt;br /&gt;
# 切换到 Nano 分支&lt;br /&gt;
$ git checkout nano-v2018.01&lt;br /&gt;
&lt;br /&gt;
# 设定各项默认配置为 nano 的spiflash支持版，若不带spi-flash的板子，请换成 licheepi_nano_defconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sunxi-tools ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git&lt;br /&gt;
$ cd sunxi-tools&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果出现：fel_lib.c:26:20: fatal error: libusb.h: No such file or directory，那需要安装libusb：&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libusb-1.0-0-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
新到的一片 F1C 设备 Nor/Nand/SD 卡 都无系统，则自动进入 fel 模式，可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 查看芯片信息&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
# FEL 模式失败&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
ERROR: Allwinner USB FEL device not found!&lt;br /&gt;
&lt;br /&gt;
# 列出所有芯片的信息&lt;br /&gt;
$ sudo sunxi-fel -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时有两种方式进行程序下载：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 1. 加载并运行之&lt;br /&gt;
$ sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin  # 单次运行&lt;br /&gt;
&lt;br /&gt;
# 2. 烧写入 spi-flash &lt;br /&gt;
$ sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 加载并执行 uboot 的 spl&lt;br /&gt;
$ sudo sunxi-fel spl [文件名]&lt;br /&gt;
&lt;br /&gt;
# 把文件内容写入内存指定地址(-p 是显示写入进度) &lt;br /&gt;
$ sudo sunxi-fel -p write [地址] [文件名]&lt;br /&gt;
&lt;br /&gt;
# 调用指定地址的函数&lt;br /&gt;
$ sudo sunxi-fel exec [地址]&lt;br /&gt;
&lt;br /&gt;
# 显示spiflash的信息&lt;br /&gt;
$ sudo sunxi-fel spiflash-info&lt;br /&gt;
&lt;br /&gt;
# 读取spiflash指定地址的数据并写入到文件&lt;br /&gt;
$ sudo sunxi-fel spiflash-read [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&lt;br /&gt;
# 写入指定文件的指定长度的内容到spiflash的指定地址&lt;br /&gt;
$ sudo sunxi-fel spiflash-write [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;如何进入 FEL mode：&amp;lt;/b&amp;gt; http://wiki.jackslab.org/F1C#FEL_mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
* http://nano.lichee.pro/build_sys/rootfs.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Buildroot ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget https://buildroot.org/downloads/buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ tar xvf buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ cd buildroot-2017.08/&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Buildroot Quick Start]]&lt;br /&gt;
&lt;br /&gt;
.config files: https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/buildroot.config&lt;br /&gt;
&lt;br /&gt;
快速添加一个 helloworld 包：http://www.chip-community.org/index.php/Startup_Program_with_Buildroot&lt;br /&gt;
&lt;br /&gt;
重 build 某个包：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-rebuild&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-dirclean&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-reinstall&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-source&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-show-depends&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-extract&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-staging&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-target&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-patch&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenWRT ====&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2573.html openwrt into spi-flash]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b licheepi-nano https://github.com/qinfengling/openwrt&lt;br /&gt;
cat &amp;gt; .config &amp;lt;&amp;lt; EOL&lt;br /&gt;
CONFIG_TARGET_sunxi=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9_DEVICE_suniv-f1c100s-licheepi-nano=y&lt;br /&gt;
CONFIG_DEVEL=y&lt;br /&gt;
CONFIG_BRCMFMAC_SDIO=y&lt;br /&gt;
CONFIG_BRCMFMAC_USB=y&lt;br /&gt;
CONFIG_DRIVER_11AC_SUPPORT=y&lt;br /&gt;
CONFIG_DRIVER_11N_SUPPORT=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_DEBUGFS=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_MESH=y&lt;br /&gt;
CONFIG_PACKAGE_brcmfmac-firmware-usb=y&lt;br /&gt;
CONFIG_PACKAGE_hostapd-common=y&lt;br /&gt;
CONFIG_PACKAGE_iw=y&lt;br /&gt;
CONFIG_PACKAGE_iwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-ahci-platform=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmfmac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmutil=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-cfg80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-libphy=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mac80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mmc=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-nls-base=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-of-mdio=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-rtc-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-scsi-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-sun4i-emac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-usb-core=y&lt;br /&gt;
CONFIG_PACKAGE_libiwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_swconfig=y&lt;br /&gt;
CONFIG_PACKAGE_wireless-regdb=y&lt;br /&gt;
CONFIG_PACKAGE_wpad-mini=y&lt;br /&gt;
CONFIG_SOFT_FLOAT=y&lt;br /&gt;
CONFIG_TARGET_OPTIONS=y&lt;br /&gt;
EOL&lt;br /&gt;
$ ./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;br /&gt;
$ make defconfig&lt;br /&gt;
$ make world&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/zhangheyang/openwrt&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* https://qinfengling.pro/build_openwrt_image_for_licheepi_nano.html&lt;br /&gt;
* [https://whycan.com/t_4279.html 尝试给f1c100s编译openwrt]&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的SPI-Flash系统编译创建全过程][https://whycan.com/t_2179.html 2]&lt;br /&gt;
* [[OpenWRT_Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig&lt;br /&gt;
&lt;br /&gt;
System configurration ---&amp;gt; [ ] Install timezone info&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/timezone&lt;br /&gt;
Etc/UTC&lt;br /&gt;
&lt;br /&gt;
$ ls -l /etc/localtime&lt;br /&gt;
/etc/localtime -&amp;gt; /usr/share/zoneinfo/Etc/UTC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deploy TF ===&lt;br /&gt;
&lt;br /&gt;
可以直接只用 TF 卡，分区时，前 3MB 留给 uboot 和 environments，第一个分区从 3MB 处开始&lt;br /&gt;
&lt;br /&gt;
'''给 U-Boot 的前 3MB:'''&lt;br /&gt;
&lt;br /&gt;
[[文件:F1c.tf.layout.png]]&lt;br /&gt;
&lt;br /&gt;
https://linux-sunxi.org/Bootable_SD_card&lt;br /&gt;
&lt;br /&gt;
需要将 uboot 写到 TF 卡 8KB 开始的位置&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''第一、二分区：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdX   # 进行分区操作&lt;br /&gt;
# 若已存分区即按 d 删除各个分区&lt;br /&gt;
# &lt;br /&gt;
# 通过 n 新建分区，第一分区16M，类型 c (W95 FAT32 LBA)，从 1MB 处 (start sector 2048) 开始，+16M；第二分区 +183M&lt;br /&gt;
# w 保存写入并退出&lt;br /&gt;
$ sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT&lt;br /&gt;
$ sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''第一分区：'''&lt;br /&gt;
* boot.scr    # u-boot 使用&lt;br /&gt;
* zImage&lt;br /&gt;
* suniv-f1c100s-licheepi-nano.dtb&lt;br /&gt;
&lt;br /&gt;
'''第二分区：'''&lt;br /&gt;
* 根文件系统内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''boot.scr 之生成：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat boot.cmd&lt;br /&gt;
setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw&lt;br /&gt;
load mmc 0:1 0x80C00000 suniv-f1c100s-ltegw.dtb&lt;br /&gt;
load mmc 0:1 0x80008000 zImage&lt;br /&gt;
bootz 0x80008000 - 0x80C00000&lt;br /&gt;
$ sudo apt install u-boot-tools&lt;br /&gt;
$ mkimage -C none -A arm -T script -d boot.cmd boot.scr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上电启动流程 ==&lt;br /&gt;
&lt;br /&gt;
After power-up, the F1C100s starts to fetch instructions from address '''0xFFFF_0000''' which is where the '''BROM''' is located at. It's an internal integrated 32 KB ROM Chip (Boot ROM or BROM).&lt;br /&gt;
&lt;br /&gt;
The BROM split up into two parts: The first part (at 0xFFFF_0000) is the '''FEL''' mode and the second is the '''eGON.BRM''' (located at 0xFFFF_4000).&lt;br /&gt;
&lt;br /&gt;
The reset vector is located at the very begining of FEL mode: at address 0xFFFF_0000. On reset, it jumps to 0xFFFF_0028 where it loads 0xFFFF_4000 (eGON.BRM) into the program counter to be executed next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== eGON Boot ===&lt;br /&gt;
&lt;br /&gt;
The eGON Boot ROM performs a few tasks:&lt;br /&gt;
&lt;br /&gt;
# do some [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L19 co-processor setup] ([http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbciiaf.html c15], (virtual) System Control Coprocessor).&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L23 disables] the WatchDog Timer&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L28 setups] CPU, AXI, AHB and APB0 clocks&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L34 enables] AHB Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L38 enables] APB0 Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L40 sets] the Stack Pointer to 32K&lt;br /&gt;
# then it [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L41 jumps] to [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L84 'boot'] which immediately [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L86 jumps to] [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot]&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot] setups up some registers, then [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2560 checks the status pin] (often called FEL pin, BSP pin or '''uboot''')&lt;br /&gt;
## if the pin is low (connected to GND) [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L90 executes] [[FEL]] mode at 0xFFFF_0020.&lt;br /&gt;
##  If the pin is high it continues trying to boot from the following media and on failure continues to the next in order.&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L91 SD Card0] also known as [[A10/CCM#CCM_MMC0_CLK|MMC0]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L98 Internal NAND flash] also known as [[A10/CCM#CCM_NAND_CLK|NAND]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L104 SD Card2] also known as [[A10/CCM#CCM_MMC2_CLK|MMC2]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L111 SPI connected NOR flash] also known as [[A10/CCM#CCM_SPI0_CLK|SPI]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s##L117 If all fails], '''FEL/USBBoot''' mode is [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L120 executed] from 0xFFFF_0020&lt;br /&gt;
&lt;br /&gt;
As can be seen, the SoC has several ways to boot and a lot would need to go wrong or 'fail' before entering FEL/USBBoot mode. This is especially important if there is a valid header in the NAND flash. Obviously this can be abused, by corrupting the header and thus forcing failure. If no other boot options are available, then FEL mode should be the final result. As a bypass mechanism, the A10 has the so called ''Boot Select Pin (BSP)''. This pin is normally internally pulled up by a 50KΩ resistor. If the pin is pulled low to GND, the A10 will try to boot into FEL/USBBoot mode. Otherwise the above boot-order will be tried.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
boot-&amp;gt; check fel key pressed (yes)--&amp;gt; FEL mode (boot from USB OTG)&lt;br /&gt;
                          \  &lt;br /&gt;
                      (no) \&lt;br /&gt;
                            \-------&amp;gt; 1) try to boot from SMHC0 (SD card)&lt;br /&gt;
                                      2) try to boot from SMHC2 (eMMC)&lt;br /&gt;
                                      3) try to boot from SPI0 (SPI NOR Flash)&lt;br /&gt;
                                      4) FEL mode (boot from USB OTG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  FEL mode ===&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F1C 无 Boot Select Pin 会依次尝试 MMC0 ---&amp;gt; NAND ---&amp;gt; MMC2 ---&amp;gt; NOR，如果启动都失败，就会进入 FEL mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方参考设计是将 PC2 短接到 GND 用了个按钮标记为 BOOT，PC2 所在的 SPI0 接的是 系统 eMMC，作为个 参考，PC2  =  SPI0_MISO = SDC1-D0，短接到 GND 即可使 eMMC 失效&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 短接 flash 的 1、4 两脚，重新上电，上电后松开短接，即可重新进入 fel 模式&lt;br /&gt;
* 在启动到内核前，回车进入 uboot，执行 sf probe 0;sf erase 0 0x100000;reset 即可重新进入 fel 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEL mode 下 PC 可用 sunxi-fei 工具通过 USB 口与 SoC 通信&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel uboot /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel -p spiflash-write 0 /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 下 erase flash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;gt; sf probe 0    # init flash device&lt;br /&gt;
&amp;gt; sf erase 0 0x100000    # erase 1MB flash&lt;br /&gt;
&amp;gt; reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
* http://linux-sunxi.org/FEL&lt;br /&gt;
* http://linux-sunxi.org/FEL/USBBoot&lt;br /&gt;
* http://linux-sunxi.org/BROM&lt;br /&gt;
* http://linux-sunxi.org/Sunxi-tools&lt;br /&gt;
* http://nano.lichee.pro/get_started/first_eat.html#id6&lt;br /&gt;
* [https://whycan.cn/t_717.html F1C100s入坑记录]&lt;br /&gt;
* [https://whycan.cn/t_3138.html 尝试从零构建F1C100s开发环境]&lt;br /&gt;
* https://whycan.com/t_2179.html spi-flash &amp;amp; wifi &amp;amp; usb-gad&lt;br /&gt;
* [https://whycan.com/t_6402.html &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot failed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# reboot&lt;br /&gt;
# Stopping network: OK&lt;br /&gt;
Saving random seed... done.&lt;br /&gt;
Stopping logging: OK&lt;br /&gt;
The system is going down NOW!&lt;br /&gt;
Sent SIGTERM to all processes&lt;br /&gt;
Sent SIGKILL to   20.550344 reboot: Restarting system&lt;br /&gt;
   21.549981 Reboot failed -- System halted&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原因：未使能看门狗。系统 Restart 时，是利用取消喂狗来触发看门狗超时，从而引发复位。&lt;br /&gt;
&lt;br /&gt;
修正： 内核配置时，选择 &lt;br /&gt;
&lt;br /&gt;
  Device Drivers → Watchdog Timer Support  → WatchDog Timer Driver Core 和 Allwinner SoCs watchdog support&lt;br /&gt;
&lt;br /&gt;
确保如下选项打开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_WATCHDOG=y&lt;br /&gt;
CONFIG_WATCHDOG_CORE=y&lt;br /&gt;
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y&lt;br /&gt;
CONFIG_SUNXI_WATCHDOG=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重新编译内核即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
* [http://linux-sunxi.org/images/b/ba/F1C100s_Datasheet_V1.0.pdf F1C100s Datasheet 2015]&lt;br /&gt;
* [http://dl.linux-sunxi.org/F1C100/Allwinner_F1C100_datasheet_20110331.pdf F1C100 Datasheet 2011]&lt;br /&gt;
* [https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf F1C600 User Manual]&lt;br /&gt;
* [http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf H3 Datasheet]&lt;br /&gt;
* [https://debugdump.com/files/20171005/13/Allwinner_V3s_Datasheet_V1.0.pdf V3S datasheet] [http://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf V3s datasheet]&lt;br /&gt;
&lt;br /&gt;
*  http://nano.lichee.pro&lt;br /&gt;
* http://tang.lichee.pro&lt;br /&gt;
&lt;br /&gt;
* [https://elinux.org/Device_Tree_Reference Device Tree]&lt;br /&gt;
* [http://nano.lichee.pro/build_sys/devicetree.html 设备树简介]&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_6402.html 自制基于F1C100s/F1C200s的M5Pi]&lt;br /&gt;
* [https://whycan.com/t_6388.html F1C100S开发了一个项目，原始技术实现，裸奔XUI GUI框架]&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2736.html 投屏软件scrcpy在Linux上的移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/HC32</id>
		<title>HC32</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/HC32"/>
				<updated>2026-03-10T06:26:54Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* DeepSleep Mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;默认使用'''小端''' (Little Endian)&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* https://hdsc.com.cn/Category82&lt;br /&gt;
* [https://developer.arm.com/tools-and-software/embedded/cmsis ARM CMSIS]&lt;br /&gt;
* [https://arm-software.github.io/CMSIS_5/Core/html/templates_pg.html CMSIS github doc]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1590 HC32D391FEUA-TFN32TR] 192KB RAM，512KB Flash, up to 200MHz Cortex-M4, QFN32 4x4mm, 1.8-3.6V, 数据计算单元(Data Computing Unit)，USB 2.0fs, I2S, 40nm eFlashULP工艺&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://www.hdsc.com.cn/Category83-1499?All=1 HC32F4A0PITB-LQFP100] 516KB RAM, 2048KB Flash, up to 240MHz Cotex-M4, LQFP100 14x14mm [https://www.hdsc.com.cn/Category82?All=1 All]&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1501 HC32F4A0SGHB-VFBGA176] 516KB RAM, 1024KB Flash, up to 240MHz Cortex-M4, VFBGA176 10×10mm, 1.8-3.6V, USB, CAN, I2S, SDIO&lt;br /&gt;
* [https://hdsc.com.cn/Category83-1497 HC32F4A0SIHB-VFBGA176] 516KB RAM, 2048KB Flash, up to 240MHz Cortex-M4, VFBGA176 10×10mm, 1.8-3.6V, USB, CAN, I2S, SDIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://product.sitimechina.com/uploadfile/images/202103/202103231149138817.pdf SiT1630]  &amp;lt;-----&amp;gt; SiT1533&lt;br /&gt;
* [http://product.sitimechina.com/product_list.php?id=1 32.768KHz 抗振动]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  HC32L130F8UA ==&lt;br /&gt;
&lt;br /&gt;
更抗灰、抗潮的封装： HC32L130E8PA (TSSOP-28, 10x7mm), HC32L130J8TA (LQFP-48, 7x7mm)&lt;br /&gt;
&lt;br /&gt;
* Cortex-M0+, Up to 48MHz&lt;br /&gt;
* 8KB RAM, 64KB Flash&lt;br /&gt;
* UART x2, LPUART x1, SPI x1, I2C x2, PWM x10&lt;br /&gt;
* AES-128, TRNG&lt;br /&gt;
*  0.9μA @3V 深度休眠模式+ RTC 工作&lt;br /&gt;
* 130μA/MHz@3V@24MHz 工作模式：CPU 和外设运行，从 Flash 运行程序&lt;br /&gt;
* -40 ~ 85 'C&lt;br /&gt;
* 1.8 ~ 5.5V&lt;br /&gt;
* QFN32, 4x4mm&lt;br /&gt;
&lt;br /&gt;
[[文件:HC32L130-QFN32.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
引脚规划参考官方文档：《HC32L130 / HC32L136 / HC32F030 系列硬件开发指南》&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PB0 - AIN8/VC0_INN10/VC1_INN6/SEG13&lt;br /&gt;
* PB1 - AIN9/EXVREF/VC1_INP6/VC1_INN7/SEG12&lt;br /&gt;
* PB6 - I2C0_SCL (SEL1)&lt;br /&gt;
* PB7 - I2C0_SDA (SEL1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PA04 - SPI0_CS (SEL1)&lt;br /&gt;
* PA05 - SPI0_CLK (SEL1)&lt;br /&gt;
* PA06 - SPI0_MISO (SEL1)&lt;br /&gt;
* PA07 - SPI0_MOSI (SEL1)&lt;br /&gt;
&lt;br /&gt;
* PA09 -  UART0_TXD (SEL1)&lt;br /&gt;
* PA10 -  UART0_RXD (SEL1)&lt;br /&gt;
&lt;br /&gt;
* PA14 -  UART0_TXD (SEL2) - SWCLK&lt;br /&gt;
* PA13 -  UART0_RXD (SEL2) - SWDIO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PB0/PB1, PB4/PB5: I2C1&lt;br /&gt;
&lt;br /&gt;
* PD0/PD1 as UART1_TX/RX (SEL3) ------------------------&amp;gt; M_RX / M_TX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
[[文件:HC32L130-mini-sys.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MODE (模式) PIN ==&lt;br /&gt;
&lt;br /&gt;
在正常情况下，必须通过电阻（推荐 10KΩ）将 MODE Pin (PD03/MD)下拉到 GND。&lt;br /&gt;
&lt;br /&gt;
* MODE (PD03)为高电平时，Power Reset 或硬件 Reset，则芯片进入在线编程模式（如加上跳帽使 MODE Pin 置位于高电平），通过上位机可以进行在线编程；&lt;br /&gt;
* MODE (PD03)为低电平时，芯片进入用户模式。&lt;br /&gt;
&lt;br /&gt;
PD03/MD 用户可用作输入端口，但是在 NRST 有效期间（即 RESETB 为低电平期间）必须保持低电平，否则 NRST 解除后（即 RESETB 变为高电平），芯片会误进入在线编程模式（Boot Mode）。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 当复位时 BOOT0（PD03）管脚为高电平，芯片工作于 ISP 编程模式，可通过 ISP 协议对 Flash 进行编程。&lt;br /&gt;
* 当复位时 BOOT0（PD03）管脚为低电平，芯片工作于用户模式，芯片执行 Flash 内的程序代码，可通过 SWD 协议对 Flash 进行编程。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''注意：'''&lt;br /&gt;
&lt;br /&gt;
- 建议预留 PA9、PA10 作为 ISP 编程接口，如需使用 PA13、PA14 作为 ISP 编程接口请参见 PCN：[https://hdsc.com.cn/Public/Uploads/uploadfile/files/20200723/20200723142051_5f192c43a9684.pdf PCN20191230-1_HC32L130HC32F030HC32L136]  提高烧录速度。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Toolchain ==&lt;br /&gt;
&lt;br /&gt;
=== Compier ===&lt;br /&gt;
&lt;br /&gt;
* toolchain/gcc-arm-none-eabi/bin/&lt;br /&gt;
** arm-none-eabi-gcc&lt;br /&gt;
** arm-none-eabi-g++&lt;br /&gt;
** arm-none-eabi-gdb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* toolchain/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/&lt;br /&gt;
** libc.a&lt;br /&gt;
** libstdc++.a&lt;br /&gt;
** libm.a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
查看生成的变量地址：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-nm -n build/main.elf  | grep k&lt;br /&gt;
00000108 T _Z15key_irq_handlerv&lt;br /&gt;
00000190 T SystemCoreClockUpdate&lt;br /&gt;
000001a0 T systick_init&lt;br /&gt;
00000368 W _sbrk&lt;br /&gt;
000003a0 T _kill&lt;br /&gt;
000003d0 T _lseek&lt;br /&gt;
000003f0 T _link&lt;br /&gt;
00000958 T Sysctrl_GetHClkFreq&lt;br /&gt;
00000a78 T Sysctrl_GetPClkFreq&lt;br /&gt;
00000b2c T SysTick_Handler&lt;br /&gt;
0000144c T _sbrk_r&lt;br /&gt;
00001470 T __malloc_lock&lt;br /&gt;
00001472 T __malloc_unlock&lt;br /&gt;
00001498 t .udivsi3_skip_div0_test&lt;br /&gt;
000015ac t .divsi3_skip_div0_test&lt;br /&gt;
20000000 D SystemCoreClock&lt;br /&gt;
20000004 d _tx_ok&lt;br /&gt;
20000094 B k&lt;br /&gt;
200001a8 b secTicks&lt;br /&gt;
200001b0 B __malloc_sbrk_start&lt;br /&gt;
200001b4 B msTicks_cnt&lt;br /&gt;
200001b8 B msTicks&lt;br /&gt;
200005c0 ? stack&lt;br /&gt;
20001c00 A __StackLimit&lt;br /&gt;
20002000 A __stack&lt;br /&gt;
20002000 B __StackTop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
查看 .data .bss 段大小：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
   9740     124     324   10188    27cc build/main.elf&lt;br /&gt;
&lt;br /&gt;
set the global var 'int k = 0':&lt;br /&gt;
$ ../../../toolchain/gcc-arm-none-eabi/bin/arm-none-eabi-size.exe build/main.elf&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
   9760     120     328   10208    27e0 build/main.elf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* .data：初始值存储在 Flash 中，启动时复制到 RAM&lt;br /&gt;
* .bss：只需要记录大小信息，不需要在 Flash 中存储 0 值。（Block Started by Symbol）段存放：&lt;br /&gt;
** '''未初始化'''的'''全局变量'''&lt;br /&gt;
** '''未初始化'''的静态变量&lt;br /&gt;
** '''初始化为 0''' 的变量（包括静态变量）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
FLASH 存储器：&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .text (代码)  |&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .rodata (常量)|&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .data (初始值)|&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | ...           |&lt;br /&gt;
    +---------------+&lt;br /&gt;
&lt;br /&gt;
RAM 存储器：&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .data (副本)  | ← 从 Flash 复制过来&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | .bss          | ← 启动时清零&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | 堆 (heap)     |&lt;br /&gt;
    +---------------+&lt;br /&gt;
    | 栈 (stack)    |&lt;br /&gt;
    +---------------+&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Uploader ===&lt;br /&gt;
&lt;br /&gt;
[https://www.cnblogs.com/milton/p/16586831.html HC32L110(二) HC32L110 在 Ubuntu 下使用 J-Link 烧录]&lt;br /&gt;
&lt;br /&gt;
==== J-Link ====&lt;br /&gt;
&lt;br /&gt;
从 https://github.com/hdscmcu/pack 获取 HDSC.HC32L130.1.0.1.pack，这是个 zip 包，改名为 L130.zip 后 unzip 解压：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ find .&lt;br /&gt;
./Device/Include/HC32L130E8PA.h&lt;br /&gt;
./Device/Include/HC32L130F8UA.h&lt;br /&gt;
./Device/Include/HC32L130J8TA.h&lt;br /&gt;
./Device/Include/system_hc32l130.h&lt;br /&gt;
./Device/Source/ARM/startup_hc32l130.s&lt;br /&gt;
./Device/Source/main.c&lt;br /&gt;
./Device/Source/system_hc32l130.c&lt;br /&gt;
./Flash/FlashHC32L130_64K.FLM&lt;br /&gt;
./HDSC.HC32L130.pdsc    # XML 描述文件&lt;br /&gt;
./SVD/HC32L130E8PA.sfr&lt;br /&gt;
./SVD/HC32L130F8UA.sfr&lt;br /&gt;
./SVD/HC32L130J8TA.sfr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
将 FlashHC32L130_64K.FLM 改名为 HC32L130_64K.FLM，放在：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;  &lt;br /&gt;
$ find /c/Program\ Files\ \(x86\)/SEGGER/JLink/Devices/HDSC/&lt;br /&gt;
/c/Program Files (x86)/SEGGER/JLink/Devices/HDSC/HC32L130_64K.FLM&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/c/Program\ Files\ \(x86\)/SEGGER/JLink/JLinkDevices.xml 增加：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=xml&amp;gt;&lt;br /&gt;
  &amp;lt;!-- Huada (HDSC) --&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L110x4&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x800&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_16K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x4000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L110B4_C4.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L110x6&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x1000&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_32K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x8000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L110B6_C6.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
  &amp;lt;Device&amp;gt;&lt;br /&gt;
    &amp;lt;ChipInfo Vendor=&amp;quot;HDSC&amp;quot; Name=&amp;quot;HC32L130&amp;quot;  WorkRAMAddr=&amp;quot;0x20000000&amp;quot; WorkRAMSize=&amp;quot;0x2000&amp;quot; Core=&amp;quot;JLINK_CORE_CORTEX_M0&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FlashBankInfo Name=&amp;quot;Flash_64K&amp;quot; BaseAddr=&amp;quot;0x0&amp;quot; MaxSize=&amp;quot;0x10000&amp;quot; Loader=&amp;quot;Devices/HDSC/HC32L130_64K.FLM&amp;quot; LoaderType=&amp;quot;FLASH_ALGO_TYPE_OPEN&amp;quot; AlwaysPresent=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Device&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
则可使用 J-Flash 烧写：&lt;br /&gt;
&lt;br /&gt;
* MCU 选 HC32L130，SWD 4000KHz&lt;br /&gt;
* Target -&amp;gt; Connect&lt;br /&gt;
* Target -&amp;gt; Production Programming（快捷键 F7）&lt;br /&gt;
* Target -&amp;gt; Manual Programming -&amp;gt; Start Application（快捷键 F9）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JLink 命令行方式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat  ../../toolchain/jlink-flash.cmd&lt;br /&gt;
erase&lt;br /&gt;
loadfile build/main.hex&lt;br /&gt;
r&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$ /c/SEGGER/JLink/JLink.exe -device HC32L130 -if swd -speed 4000 -CommanderScript ../../toolchain/jlink-flash.cmd&lt;br /&gt;
SEGGER J-Link Commander V6.72c (Compiled May  8 2020 17:22:54) DLL version V6.72c, compiled May  8 2020 17:21:59&lt;br /&gt;
&lt;br /&gt;
J-Link Command File read successfully.&lt;br /&gt;
Processing script file...&lt;br /&gt;
&lt;br /&gt;
J-Link connection not established yet but required for command.&lt;br /&gt;
Connecting to J-Link via USB...O.K.&lt;br /&gt;
Firmware: J-Link V9 compiled Dec 13 2019 11:14:50&lt;br /&gt;
Hardware version: V9.30&lt;br /&gt;
S/N: 36310083&lt;br /&gt;
License(s): RDI, GDB, FlashDL, FlashBP, JFlash&lt;br /&gt;
VTref=3.300V&lt;br /&gt;
Target connection not established yet but required for command.&lt;br /&gt;
Device &amp;quot;HC32L130&amp;quot; selected.&lt;br /&gt;
&lt;br /&gt;
Connecting to target via SWD&lt;br /&gt;
Found SW-DP with ID 0x0BC11477&lt;br /&gt;
Unknown DP version. Assuming DPv0&lt;br /&gt;
Scanning AP map to find all available APs&lt;br /&gt;
AP[1]: Stopped AP scan as end of AP map has been reached&lt;br /&gt;
AP[0]: AHB-AP (IDR: 0x04770031)&lt;br /&gt;
Iterating through AP map to find AHB-AP to use&lt;br /&gt;
AP[0]: Core found&lt;br /&gt;
AP[0]: AHB-AP ROM base: 0xE00FF000&lt;br /&gt;
CPUID register: 0x410CC601. Implementer code: 0x41 (ARM)&lt;br /&gt;
Found Cortex-M0 r0p1, Little endian.&lt;br /&gt;
FPUnit: 4 code (BP) slots and 0 literal slots&lt;br /&gt;
CoreSight components:&lt;br /&gt;
ROMTbl[0] @ E00FF000&lt;br /&gt;
ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS&lt;br /&gt;
ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT&lt;br /&gt;
ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB&lt;br /&gt;
Cortex-M0 identified.&lt;br /&gt;
Erasing device...&lt;br /&gt;
J-Link: Flash download: Total time needed: 0.189s (Prepare: 0.110s, Compare: 0.000s, Erase: 0.075s, Program: 0.000s, Verify: 0.000s, Restore: 0.003s)&lt;br /&gt;
Erasing done.&lt;br /&gt;
&lt;br /&gt;
Downloading file [build/main.hex]...&lt;br /&gt;
J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (10752 bytes)&lt;br /&gt;
J-Link: Flash download: Total time needed: 1.095s (Prepare: 0.017s, Compare: 0.134s, Erase: 0.299s, Program: 0.570s, Verify: 0.060s, Restore: 0.012s)&lt;br /&gt;
O.K.&lt;br /&gt;
&lt;br /&gt;
Reset delay: 0 ms&lt;br /&gt;
Reset type NORMAL: Resets core &amp;amp; peripherals via SYSRESETREQ &amp;amp; VECTRESET bit.&lt;br /&gt;
Reset: Halt core after reset via DEMCR.VC_CORERESET.&lt;br /&gt;
Reset: Reset device via AIRCR.SYSRESETREQ.&lt;br /&gt;
&lt;br /&gt;
Script processing completed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
或者：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat up.cmd&lt;br /&gt;
device HC32L130&lt;br /&gt;
si SWD&lt;br /&gt;
speed 4000&lt;br /&gt;
connect&lt;br /&gt;
erase&lt;br /&gt;
loadfile build/main.hex&lt;br /&gt;
r&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$ /c/SEGGER/JLink/JLink.exe -CommanderScript ./up.cmd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UART ====&lt;br /&gt;
&lt;br /&gt;
* https://github.com/kicer/hc32flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STLINK ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.51hei.com/bbs/dpj-194723-1.html pyOCD]&lt;br /&gt;
&lt;br /&gt;
* https://www.cnblogs.com/milton/p/16586831.html&lt;br /&gt;
* https://github.com/IOsetting/hc32l110-template&lt;br /&gt;
* https://gitcode.com/open-source-toolkit/8cb1a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linker Script ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
MEMORY&lt;br /&gt;
{&lt;br /&gt;
    FLASH ( rx )      : ORIGIN = 0x00000000, LENGTH = 64K&lt;br /&gt;
    RAM ( rxw )       : ORIGIN = 0x20000000, LENGTH = 8K&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.vectors (Vector Table) 位于 Flash 开始处，Flash 上代码段 .text 之前：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
ENTRY(Reset_Handler)&lt;br /&gt;
&lt;br /&gt;
SECTIONS&lt;br /&gt;
{&lt;br /&gt;
  .text :&lt;br /&gt;
  {&lt;br /&gt;
    KEEP(*(.vectors))&lt;br /&gt;
    __Vectors_End = .;&lt;br /&gt;
    __Vectors_Size = __Vectors_End - __Vectors;&lt;br /&gt;
    __end__ = .;&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
arch/hc32/common/startup_hc32l13x.c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
/*----------------------------------------------------------------------------&lt;br /&gt;
  Exception / Interrupt Vector table&lt;br /&gt;
 *----------------------------------------------------------------------------*/&lt;br /&gt;
const pFunc __Vectors[] __attribute__ ((section(&amp;quot;.vectors&amp;quot;))) = {&lt;br /&gt;
    /* Cortex-M Exception Handlers */&lt;br /&gt;
    (pFunc)&amp;amp;__StackTop,                       /*      Initial Stack Pointer     */&lt;br /&gt;
    Reset_Handler,                            /*      Reset Handler             */&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bare Metal ==&lt;br /&gt;
&lt;br /&gt;
=== Reset Handler ===&lt;br /&gt;
&lt;br /&gt;
hc32/variants/hc32l130f8ua/hc32l130f8ua.ld (Link Script) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
ENTRY(Reset_Handler)&lt;br /&gt;
&lt;br /&gt;
SECTIONS&lt;br /&gt;
{&lt;br /&gt;
  .text :&lt;br /&gt;
  {&lt;br /&gt;
    KEEP(*(.vectors))&lt;br /&gt;
    __Vectors_End = .;&lt;br /&gt;
    __Vectors_Size = __Vectors_End - __Vectors;&lt;br /&gt;
    __end__ = .;&lt;br /&gt;
    *(.text*)&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hc32/common/startup_hc32l13x.c:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Reset_Handler(void) {&lt;br /&gt;
&lt;br /&gt;
    uint32_t *pSrc, *pDest;&lt;br /&gt;
    uint32_t *pTable __attribute__((unused));&lt;br /&gt;
&lt;br /&gt;
    SystemInit();&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * Single section scheme.&lt;br /&gt;
     *&lt;br /&gt;
     *  The ranges of copy from/to are specified by following symbols&lt;br /&gt;
     *    __etext: LMA of start of the section to copy from. Usually end of text&lt;br /&gt;
     *    __data_start__: VMA of start of the section to copy to&lt;br /&gt;
     *    __data_end__: VMA of end of the section to copy to&lt;br /&gt;
     *&lt;br /&gt;
     *  All addresses must be aligned to 4 bytes boundary.&lt;br /&gt;
    */&lt;br /&gt;
    pSrc  = &amp;amp;__etext;&lt;br /&gt;
    pDest = &amp;amp;__data_start__;&lt;br /&gt;
&lt;br /&gt;
    for ( ; pDest &amp;lt; &amp;amp;__data_end__ ; ) {&lt;br /&gt;
        *pDest++ = *pSrc++;&lt;br /&gt;
    }&lt;br /&gt;
    __START();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SystemInit() ===&lt;br /&gt;
&lt;br /&gt;
'''位于 hc32/common/system_hc32l13x.c:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void SystemInit(void)&lt;br /&gt;
{&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCL_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C22ul)));&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCH_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C08ul)));&lt;br /&gt;
    SystemCoreClockUpdate();&lt;br /&gt;
    _HidePinInit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Makefile ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
-D__START=main&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SystemInit() ==&lt;br /&gt;
&lt;br /&gt;
'''位于 hc32/common/system_hc32l13x.c:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void SystemInit(void)&lt;br /&gt;
{&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCL_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C22ul)));&lt;br /&gt;
    M0P_SYSCTRL-&amp;gt;RCH_CR_f.TRIM = (*((volatile uint16_t*) (0x00100C08ul)));&lt;br /&gt;
    SystemCoreClockUpdate();&lt;br /&gt;
    _HidePinInit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 系统时钟 (SystemClk) ===&lt;br /&gt;
&lt;br /&gt;
HC32L13x 支持以下五种时钟源作为系统时钟：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
SysctrlClkRCH  = 0u,       // 内部 RC 高速时钟，输出频率为 4~24MHz&lt;br /&gt;
SysctrlClkXTH  = 1u,       // 外部晶振高速时钟，XTH 可以不接晶振，直接从 PD00 引脚输入 4~32MHz 的时钟信号&lt;br /&gt;
SysctrlClkRCL  = 2u,       // 内部 RC 低速时钟，可选频率：38.4K 与 32.768K。当系统进入 DeepSleep，此低速时钟不会自动关闭，超低功耗外设模块可以选择 RCL 作为其时钟。&lt;br /&gt;
SysctrlClkXTL  = 3u,       // 外部晶振低速时钟，XTL 可以不接晶振，直接从 PC14 引脚输入 32.768KHz 的时钟信号。当系统进入 Deep Sleep，此低速时钟不会自动关闭。超低功耗模式下工作的&lt;br /&gt;
                           // 外设模块可以选择 XTL 作为其时钟。&lt;br /&gt;
SysctrlClkPLL  = 4u,       // 锁相环 PLL 时钟&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
还有两个辅助时钟：&lt;br /&gt;
* 内部低速 10K 时钟；仅供 WatchDog 和 CLKTRIM 模块使用。&lt;br /&gt;
* 内部 150K 时钟：仅供 LVD 和 VC 模块使用。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''芯片上电或复位后的默认时钟源为 4MHz 的内部 RCH 时钟'''；当系统进入 Deep Sleep，此高速时钟会自动关闭。&lt;br /&gt;
&lt;br /&gt;
更改寄存器 RCH_CR[10:0]的数值即可调整 RCH 的输出频率。寄存器数值每增加 1 则 RCH 的输出频率增加约 0.2%，总调整范围为 4~24MHz。更改 RCH 输出频率需要按照特定的更改时序，详见系统时钟切换章节。&lt;br /&gt;
&lt;br /&gt;
内部高速时钟 RCH 从启动到稳定仅需 4us。为了在深度休眠模式下能快速响应中断，建议进入深度休眠模式前将系统时钟切换为 RCH。&lt;br /&gt;
&lt;br /&gt;
RCL 默认启用 RCL_CR_TRIM_32768_VAL (32.768kHz)，可通过设置 RCL_CR 其为 RCL_CR_TRIM_38400_VAL (38.4kHz)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HCLK 时钟 ===&lt;br /&gt;
&lt;br /&gt;
主供 CPU 核心。位于SYSCTRL 的 SYSCTRL0 寄存器&lt;br /&gt;
&lt;br /&gt;
'''HCLK 时钟来源选择:''' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
000： SystemClk         /* reset value */&lt;br /&gt;
001： SystemClk/2 &lt;br /&gt;
010： SystemClk/4 &lt;br /&gt;
011： SystemClk/8 &lt;br /&gt;
100： SystemClk/16 &lt;br /&gt;
101： SystemClk/32 &lt;br /&gt;
110： SystemClk/64 &lt;br /&gt;
111： SystemClk/128 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PCLK 时钟 ===&lt;br /&gt;
&lt;br /&gt;
主供外设。位于SYSCTRL 的 SYSCTRL0 寄存器&lt;br /&gt;
&lt;br /&gt;
'''PCLK 时钟来源选择:''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00： HCLK         /* reset value */&lt;br /&gt;
01： HCLK/2 &lt;br /&gt;
10： HCLK/4 &lt;br /&gt;
11： HCLK/8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SysTick 定时器 ==&lt;br /&gt;
&lt;br /&gt;
SysTick 为 24 位的定时器，向下计数。定时器的计数减到 0 后，就会重新装载一个可编程的数值，同时产生 SysTick 异常（异常编号为 15）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
MCU 的 GPIO 是通过 CMOS 的 PMOS 输出高电平，NMOS 输出低电平。&lt;br /&gt;
&lt;br /&gt;
内部上拉电阻也是一个 PMOS，引脚输出时，PMOS 或 NMOS 工作在线性区域，其等效导通电阻随着 MCU 的 VCC 变化而变化。到 MCU 工作下限电压附近时，其导通电阻会急剧变化，表象上看就是驱动能力急剧下降，上拉电阻也变大&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
芯片复位后端口为高阻输入，目的是防止芯片被异常复位时，对外部器件产生异常动作。但为了避免高阻输入而产生的漏电，用户要在芯片启动之后对端口进行相应的配置（配置成内部拉高/拉低输入或者输出）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupt ==&lt;br /&gt;
&lt;br /&gt;
嵌套向量中断控制器 (NVIC) ，支持 32 个外部中断请求（IRQ）， 1 个不可屏蔽中断（NMI）&lt;br /&gt;
&lt;br /&gt;
Cortex-M0+ 的中断向量表，位于存储器空间的开始位置，注意主栈指针（MSP）的初始值位于第一个入口：&lt;br /&gt;
&lt;br /&gt;
[[文件:Cortex-m0plus-int-vec-table.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
中断号定义于 '''arch/hc32/common/hc32l13x.h:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/* Interrupt Number Definition */&lt;br /&gt;
typedef enum IRQn&lt;br /&gt;
{&lt;br /&gt;
    NMI_IRQn            = -14, /*  2 Non Maskable                            */&lt;br /&gt;
    HardFault_IRQn      = -13, /*  3 Hard Fault                              */&lt;br /&gt;
    SVC_IRQn            = -5,  /* 11 SV Call                                 */&lt;br /&gt;
    PendSV_IRQn         = -2,  /* 14 Pend SV                                 */&lt;br /&gt;
    SysTick_IRQn        = -1,  /* 15 System Tick                             */&lt;br /&gt;
&lt;br /&gt;
    PORTA_IRQn          = 0 ,&lt;br /&gt;
    PORTB_IRQn          = 1 ,&lt;br /&gt;
    PORTC_IRQn          = 2 ,&lt;br /&gt;
    PORTD_IRQn          = 3 ,&lt;br /&gt;
    DMAC_IRQn           = 4 ,&lt;br /&gt;
    TIM3_IRQn           = 5 ,&lt;br /&gt;
    UART0_IRQn          = 6 ,&lt;br /&gt;
    UART1_IRQn          = 7 ,&lt;br /&gt;
    LPUART0_IRQn        = 8 ,&lt;br /&gt;
    LPUART1_IRQn        = 9 ,&lt;br /&gt;
    SPI0_IRQn           = 10,&lt;br /&gt;
    SPI1_IRQn           = 11,&lt;br /&gt;
    I2C0_IRQn           = 12,&lt;br /&gt;
    I2C1_IRQn           = 13,&lt;br /&gt;
    TIM0_IRQn           = 14,&lt;br /&gt;
    TIM1_IRQn           = 15,&lt;br /&gt;
    TIM2_IRQn           = 16,&lt;br /&gt;
    LPTIM_IRQn          = 17,&lt;br /&gt;
    ADTIM4_IRQn         = 18,&lt;br /&gt;
    ADTIM5_IRQn         = 19,&lt;br /&gt;
    ADTIM6_IRQn         = 20,&lt;br /&gt;
    PCA_IRQn            = 21,&lt;br /&gt;
    WDT_IRQn            = 22,&lt;br /&gt;
    RTC_IRQn            = 23,&lt;br /&gt;
    ADC_IRQn            = 24,&lt;br /&gt;
    PCNT_IRQn           = 25,&lt;br /&gt;
    VC0_IRQn            = 26,&lt;br /&gt;
    VC1_IRQn            = 27,&lt;br /&gt;
    LVD_IRQn            = 28,&lt;br /&gt;
    LCD_IRQn            = 29,&lt;br /&gt;
    FLASH_RAM_IRQn      = 30,&lt;br /&gt;
    CLKTRIM_IRQn        = 31,&lt;br /&gt;
} IRQn_Type;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PortA, B, C, D 为 GPIO 中断处理入口&lt;br /&gt;
&lt;br /&gt;
四个口的对应寄存器：&lt;br /&gt;
* 中断状态寄存器 Px_STAT 地址分别为： 0x200, 0x240, 0x280, 0x2C0 (PA_STAT, PB_STAT, PC_STAT, PD_STAT)&lt;br /&gt;
* 中断清除寄存器 Px_ICLR 地址分别为： 0x210, 0x250, 0x290, 0x2D0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Low Power ==&lt;br /&gt;
&lt;br /&gt;
=== __WFI() ===&lt;br /&gt;
&lt;br /&gt;
Wait For Interrupt, 指令执行后，MCU 挂起，直到下一个中断出现。。。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
/* Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs */&lt;br /&gt;
__attribute__((always_inline)) __STATIC_INLINE void __WFI(void)&lt;br /&gt;
{&lt;br /&gt;
  __ASM volatile (&amp;quot;wfi&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
中断出现、继续执行，下一条指令位于 __WFI() 之后，即返回 wfi 指令之所在&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sleep Mode ===&lt;br /&gt;
&lt;br /&gt;
CPU 核心不运行，其他外设都运行，aeco-goxp v1.2 约 200uA&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Lpm_GotoSleep(boolean_t bOnExit)&lt;br /&gt;
{&lt;br /&gt;
    SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;br /&gt;
    SCB-&amp;gt;SCR |= 1u&amp;lt;&amp;lt;bOnExit;&lt;br /&gt;
    __WFI();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DeepSleep Mode ===&lt;br /&gt;
&lt;br /&gt;
少量外设运行，aeco-goxp v1.2 约 2uA。务必预留外部中断唤醒按钮！&lt;br /&gt;
&lt;br /&gt;
* XTL &lt;br /&gt;
* RCL &lt;br /&gt;
* RESET&lt;br /&gt;
* WDT &lt;br /&gt;
* RTC &lt;br /&gt;
* LPUART0-1 &lt;br /&gt;
* GPIO &lt;br /&gt;
* VC0-1 &lt;br /&gt;
&lt;br /&gt;
* CLKTRIM &lt;br /&gt;
* LPTIM &lt;br /&gt;
* POR/BOR &lt;br /&gt;
* PCNT &lt;br /&gt;
* LVD &lt;br /&gt;
* LCD &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void Lpm_GotoDeepSleep(boolean_t bOnExit)&lt;br /&gt;
{&lt;br /&gt;
    SCB-&amp;gt;SCR |= SCB_SCR_SLEEPDEEP_Msk;&lt;br /&gt;
    SCB-&amp;gt;SCR |= 1u&amp;lt;&amp;lt;bOnExit;&lt;br /&gt;
    __WFI();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UART ==&lt;br /&gt;
&lt;br /&gt;
《HC32L130 / HC32L136 / HC32F030 系列硬件开发指南》：&lt;br /&gt;
&lt;br /&gt;
* PA09 --- UART0_TX&lt;br /&gt;
* PA10 --- UART0_RX&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I2C ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SPI ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LP Timer ==&lt;br /&gt;
&lt;br /&gt;
Low Power Timer 低功耗计时器&lt;br /&gt;
&lt;br /&gt;
LPTimer 的定时器支持两种工作模式，通过设置定时器控制寄存器（CR）中 MD 选择工作模式：&lt;br /&gt;
* 模式 1 为 16 bit 自由计数模式&lt;br /&gt;
* 模式 2 是 16 bit 重载模式&lt;br /&gt;
&lt;br /&gt;
LPTimer 启动时会自动装载重载寄存器 ARR 的值到计数器中。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''计数功能'''：用于测定某个事件发生的次数。计数到最大值会溢出并且产生中断。计数器在每个相应的输入时钟的下降沿累加一次。输入信号被内部的计数时钟采样，因此外部输入时钟频率不能超过系统的计数时钟。 &lt;br /&gt;
* '''定时功能'''：用于产生间隔定时。在定时功能中，定时器一个时钟累加一次，计数到最大值会溢出并且产生中断。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RTC ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ADC ==&lt;br /&gt;
&lt;br /&gt;
HC32L130F8UA 含有 8 个 12bit ADC&lt;br /&gt;
&lt;br /&gt;
https://bbs.21ic.com/icview-2817282-1-1.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* https://www.hdsc.com.cn/list/71/35.htm&lt;br /&gt;
* https://hdsc.com.cn/cn/index/listView/catid/94/cdk/56a757q!57yW56iL&lt;br /&gt;
* HC32L130_HC32L136系列数据手册Rev1.9.pdf&lt;br /&gt;
* HC32L130_硬件开发指南.pdf&lt;br /&gt;
* HC32L130_HC32L136系列用户手册Rev2.31.pdf&lt;br /&gt;
* [https://vivonomicon.com/2018/04/02/bare-metal-stm32-programming-part-1-hello-arm/ &amp;quot;Bare Metal&amp;quot; STM32 Programming]&lt;br /&gt;
* [https://www.geeksforgeeks.org/memory-layout-of-c-program/ Memory Layout of C Programs]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/F1C</id>
		<title>F1C</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/F1C"/>
				<updated>2026-03-10T03:45:17Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* sunxi-tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Core overview ==&lt;br /&gt;
&lt;br /&gt;
* F1C100s / F1C200s&lt;br /&gt;
** USB 2.0 OTG, UART x3, SPI x2, TWI x3, &lt;br /&gt;
&lt;br /&gt;
* V831 &amp;lt;---&lt;br /&gt;
** USB 2.0 OTG, UART x4, SPI x2, TWI x4, GPIO x4&lt;br /&gt;
&lt;br /&gt;
* V851S (64MB), V851SE (64MB, SiP EPHY, no display),  V851S3 (128MB)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x6&lt;br /&gt;
&lt;br /&gt;
* V853 / V853s (LFBGA, no SiP RAM)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F1C100s Overview ==&lt;br /&gt;
&lt;br /&gt;
* ARM926-EJS, up to 900MHz&lt;br /&gt;
* 32KB I-Cache, 16KB D-Cache, 5-stage pipeline&lt;br /&gt;
* 32MB SiP DDR1 (F1C200s is 64MB SiP DDR1)&lt;br /&gt;
&lt;br /&gt;
* RGB LCD interface&lt;br /&gt;
* USB 2.0 OTG&lt;br /&gt;
* SDIO&lt;br /&gt;
* SPI x2 (SPI_SCLK: 3KHz ~ 100MHz)&lt;br /&gt;
* TWI x3&lt;br /&gt;
* UART x3&lt;br /&gt;
* TV out x 1, TV in x 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PWM x2&lt;br /&gt;
* LRADC x1&lt;br /&gt;
* Speaker x2 + Mic x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-blockdiagram.jpg | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-typical-app.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C-roadmap.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-pinmap.jpg | 650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 荔枝派 Pin Map ===&lt;br /&gt;
&lt;br /&gt;
[[文件:Lichee-nano-pin-map.png]]&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** UART0_RX --- PE0&lt;br /&gt;
** UART0_TX --- PE1&lt;br /&gt;
** dtb 中默认系统启动的串口 serial0:115200n8&lt;br /&gt;
** UART1_RX --- PD3 --- D5&lt;br /&gt;
** UART1_TX --- PD4 --- D6&lt;br /&gt;
** UART2_RX --- PD14 --- D20&lt;br /&gt;
** UART2_TX --- PD13 --- D19&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SPI1&lt;br /&gt;
** PA0 - SPI1_CS&lt;br /&gt;
** PA1 - SPI1_MOSI&lt;br /&gt;
** PA2 - SPI1_SCK&lt;br /&gt;
** PA3 - SPI1_MISO&lt;br /&gt;
** PE3 -- Reset -- D0&lt;br /&gt;
** PE4 -- Interrupt -- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB&lt;br /&gt;
** 右上角，PCLK 右边为 USB_DM (D-)&lt;br /&gt;
** 右上角，PCLK 左边为 USB_DP (D+)&lt;br /&gt;
** USB_ID，拉低为主机模式，拉高为设备模式。Nano 开发板将 USB_ID 47K 上拉到 3V3，同时 USB_ID 和 PE2 相连。dts 设置使用 PE2 作为检测管脚（默认 active high，即：高电平）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进入系统后，可通过改变 PE2 的高低电平来控制 USB 的模式。比如默认 dtb 设置 PE2 为 active high，则进系统后，设置 PE2 为低电平，则 USB 会切换为主机模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I2C0&lt;br /&gt;
** PE11 --- SCL&lt;br /&gt;
** PE12 --- SDA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* GPIO&lt;br /&gt;
** PE3 --- D0&lt;br /&gt;
** PE4 --- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/Lichee_nano.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
* Power&lt;br /&gt;
** VCC-CORE: 1.0 - 1.2V&lt;br /&gt;
** VCC-DRAM: 2.3 - 2.7V&lt;br /&gt;
** AVCC: 2.5 - 3.1V&lt;br /&gt;
** VCC-IO: 3.0 - 3.6V&lt;br /&gt;
** VCC-HP: 3.0 - 3.5V&lt;br /&gt;
** VCC-TV: 3.0 - 3.5V&lt;br /&gt;
** VCC-USB: 3.0 - 3.5V&lt;br /&gt;
&lt;br /&gt;
* SIP DDR1&lt;br /&gt;
** SVREF (P33) &lt;br /&gt;
&lt;br /&gt;
* 音频&lt;br /&gt;
** HPL, HPR 左右声道；HPCOM, HPCOMFP 接耳机插座&lt;br /&gt;
** LINEIN：可用于连接电吉他、电子琴、合成器等外界设备的音频信号，由于这些设备本身输出功率就比较大，因此需要连接到 Line in 端口录音，当然使用它们录音从某种程度上也可以被称为外部设备的“内录”。一般您使用的声卡越好，Line in里的噪音就会越低，录制效果也会比较好。&lt;br /&gt;
** MICIN：用于连接麦克风，和 Line in 的区别在于它有前置放大器，麦克风本身输出功率小，因此必须要有一个放大设备来放大音频信号&lt;br /&gt;
** VRA1, VRA2, FMINL, FMINR&lt;br /&gt;
&lt;br /&gt;
* TV&lt;br /&gt;
** TV_OUT&lt;br /&gt;
** TV_VRN, TV_VRP, TVIN1, TVIN0&lt;br /&gt;
&lt;br /&gt;
* KEY INPUT&lt;br /&gt;
** LRADC0: 6bit resolution; 0 - 2V, 250Hz; 3.0/2^6 = 0.047&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PE11 CLK Out ==&lt;br /&gt;
&lt;br /&gt;
PE11 管脚可以输出 clkout，给 CIF 摄像头的提供时钟源，节约成本&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;clk-mux@0x01c000f0&amp;quot;: {&lt;br /&gt;
		&amp;quot;parent&amp;quot;: [&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;losc&amp;quot;, &amp;quot;value&amp;quot;: 0 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;osc32k&amp;quot;, &amp;quot;value&amp;quot;: 1 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;hosc&amp;quot;, &amp;quot;value&amp;quot;: 2 }&lt;br /&gt;
		],&lt;br /&gt;
		&amp;quot;name&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 24, &amp;quot;width&amp;quot;: 2,&lt;br /&gt;
		&amp;quot;default&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;hosc&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;clk-ratio@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 20, &amp;quot;width&amp;quot;: 2, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-divider@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 8, &amp;quot;width&amp;quot;: 5, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-gate@0x01c000f0&amp;quot;: {&amp;quot;parent&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 31, &amp;quot;invert&amp;quot;: false, &amp;quot;default&amp;quot;: { &amp;quot;enable&amp;quot;: false } },&lt;br /&gt;
	&amp;quot;clk-link&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;link-clkout&amp;quot; },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可输出24MHZ，12MHZ，6MHZ。。。&lt;br /&gt;
&lt;br /&gt;
参考 patch: https://gitee.com/xboot/xboot/commit/245601d534de73748a37f05531ff7a11bdc0545c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
调试消息控制台设置：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
0 = KERN_EMERG      /* 系统即将崩溃 */&lt;br /&gt;
1 = KERN_ALERT      /* 需要立即关注 */&lt;br /&gt;
2 = KERN_CRIT       /* 紧急情况 */&lt;br /&gt;
3 = KERN_ERR        /* 错误消息 */&lt;br /&gt;
4 = KERN_WARNING    /* 警告消息 */&lt;br /&gt;
5 = KERN_NOTICE     /* 正常但需要注意 */&lt;br /&gt;
6 = KERN_INFO       /* 信息性消息 */&lt;br /&gt;
7 = KERN_DEBUG      /* 调试消息 */&lt;br /&gt;
&lt;br /&gt;
# 设置控制台级别&lt;br /&gt;
echo 6 &amp;gt; /proc/sys/kernel/printk        # 只显示 0-6 级别的消息&lt;br /&gt;
echo 8 &amp;gt; /proc/sys/kernel/printk        # 显示更多调试信息&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/printk        # 只显示紧急消息&lt;br /&gt;
&lt;br /&gt;
dmesg -n 8  # 效果同 echo 8 &amp;gt; /proc/sys/kernel/printk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone https://github.com/Icenowy/linux.git&lt;br /&gt;
&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
# 添加下面两行&lt;br /&gt;
192.30.253.112  github.com&lt;br /&gt;
151.101.73.194 github.global.ssl.fastly.net&lt;br /&gt;
&lt;br /&gt;
# 可自行通过dns检测网站检测github.global.ssl.fastly.net，更换为更快的ip地址&lt;br /&gt;
# 完整拉取linux极大，建议只拉取单层分支，减少等待时间：&lt;br /&gt;
$ git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.config: http://dl.sipeed.com/LICHEE/Nano/SDK/config    http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm menuconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8    #请自行修改编译线程数&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
arch/arm/boot/dts/suniv.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s-tesladr.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''arch/arm/boot/dts/Makefile:'''&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
dtb-$(CONFIG_MACH_SUNIV) += \&lt;br /&gt;
    suniv-f1c100s-ltegw.dtb \&lt;br /&gt;
    suniv-f1c100s-tesladr.dtb&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
查看 DTS 中对应的设备用了哪些关键字：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ grep -r of_property drivers/spi/ | grep spi-max-frequency&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SPI:'''&lt;br /&gt;
&lt;br /&gt;
SPI_SCLK: 3KHz ~ 100MHz&lt;br /&gt;
* SPI Nor Flash: spi-max-frequency = &amp;lt;50000000&amp;gt;; (50MHz)&lt;br /&gt;
* SPI 127x: spi-max-frequency = &amp;lt;10000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# CONFIG_SPI_SUN4I is not set&lt;br /&gt;
CONFIG_SPI_SUN6I=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
drivers/spi/spi-bitbang.o&lt;br /&gt;
drivers/spi/spidev.o&lt;br /&gt;
drivers/spi/spi-gpio.o&lt;br /&gt;
drivers/spi/spi.o&lt;br /&gt;
drivers/spi/spi-sun6i.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 leds {&lt;br /&gt;
             compatible = &amp;quot;gpio-leds&amp;quot;;&lt;br /&gt;
             blue_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:blue:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 4 GPIO_ACTIVE_LOW&amp;gt;; /* PE4 */&lt;br /&gt;
             };&lt;br /&gt;
             green_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:green:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 5 GPIO_ACTIVE_LOW&amp;gt;; /* PE5 */&lt;br /&gt;
                     default-state = &amp;quot;on&amp;quot;;&lt;br /&gt;
             };&lt;br /&gt;
             red_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:red:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 5 6 GPIO_ACTIVE_LOW&amp;gt;; /* PE6 */&lt;br /&gt;
             };&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
命令行方式：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat gpio.sh&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
if [ ! -e /sys/class/gpio/gpio$1 ]; then&lt;br /&gt;
    echo $1 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio$1/direction&lt;br /&gt;
echo $2 &amp;gt; /sys/class/gpio/gpio$1/value&lt;br /&gt;
&lt;br /&gt;
$ ./gpio.sh 105 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# A: 0&lt;br /&gt;
# B: 1&lt;br /&gt;
# C: 2&lt;br /&gt;
# D: 3&lt;br /&gt;
# E: 4&lt;br /&gt;
 * PB5 = 32*1 + 5 = 37&lt;br /&gt;
 * PC6= 32*2 + 6 = 70&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * PB5 = 32*1 + 5&lt;br /&gt;
 * PC6= 32*2 + 6&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
*/&lt;br /&gt;
gpio_direction_output(105, 0);     // 设置 PD9 为输出状态, 默认输出低电平&lt;br /&gt;
gpio_set_value(105, 1);                // 高电平&lt;br /&gt;
gpio_set_value(105, 0);                // 低电平&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
* pcf8563: 0x51&lt;br /&gt;
* sht3x: 0x44 / 0x45&lt;br /&gt;
* sht2x: 0x40&lt;br /&gt;
* sts3x: 0x4A / 0x4B&lt;br /&gt;
* pc10: 0x28&lt;br /&gt;
* pc10nsa: 0x6D&lt;br /&gt;
* pcz1: 0x28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TeslaDR:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        /* 在 pio 节点下，添加 i2c 引脚定义 */&lt;br /&gt;
        i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PE11&amp;quot;, &amp;quot;PE12&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M6:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
            i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PD12&amp;quot;, &amp;quot;PD0&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
            };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        i2c0: i2c@1C27000 {&lt;br /&gt;
            compatible = &amp;quot;allwinner,sun6i-a31-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x01C27000 0x400&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;7&amp;gt;;&lt;br /&gt;
            clocks = &amp;lt;&amp;amp;ccu CLK_BUS_I2C0&amp;gt;;&lt;br /&gt;
            resets = &amp;lt;&amp;amp;ccu RST_BUS_I2C0&amp;gt;;&lt;br /&gt;
            pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
            pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
            #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
            #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCL 和 SDA 必须 10K / 1K 拉高，否则 kernel 启动时会报：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    0.972082] i2c /dev entries driver&lt;br /&gt;
[    3.044909] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pcf8563@0x51:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# i2cdetect -y 0&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
常用命令：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@autoeco:~/f1c/linux$ date +%s -u&lt;br /&gt;
1758617972&lt;br /&gt;
&lt;br /&gt;
# date -s @1758617972&lt;br /&gt;
Tue Sep 23 08:59:32 UTC 2025&lt;br /&gt;
&lt;br /&gt;
# hwclock -r&lt;br /&gt;
[  369.265193] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.&lt;br /&gt;
hwclock: RTC_RD_TIME: Invalid argument&lt;br /&gt;
# hwclock -w&lt;br /&gt;
# hwclock -r&lt;br /&gt;
Tue Sep 23 08:59:59 2025  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LRADC ===&lt;br /&gt;
&lt;br /&gt;
* KEYADC_BaseAddr: 0x01C2 3400&lt;br /&gt;
* KEYADC_Ctrl_Reg: +0x00&lt;br /&gt;
* KEYADC_IntCtrl_Reg: +0x04&lt;br /&gt;
* KEYADC_IntStatus_Reg: +0x08&lt;br /&gt;
* KEYADC_Data_Reg: +0x0C&lt;br /&gt;
&lt;br /&gt;
* 6 位分辨率，检测电压范围 0~2V&lt;br /&gt;
* 最高 250Hz 采样率&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此 0 对应 0V，63 对应 2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取 4.2V 的电池电压，应采用 1% 的电阻分压，推荐 Vbat - 330K - 300K - GND，LRADC 测 300K 电阻的两端电压：&lt;br /&gt;
* 300/630 * 4.2 = 1.999&lt;br /&gt;
* 300/630 * 2.75 = 1.31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 电容触摸屏的支持 ===&lt;br /&gt;
&lt;br /&gt;
电容触摸屏的控制芯片为 GT911 使用 I2C 接口，我们要在 suniv-f1c100s-*.dts 文件中添加节点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/input/input.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/interrupt-controller/irq.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* 添加引用 */&lt;br /&gt;
&amp;amp;i2c0 {&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    gt911: touchscreen@14 {&lt;br /&gt;
        compatible = &amp;quot;goodix,gt911&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x14&amp;gt;;&lt;br /&gt;
        interrupt-parent = &amp;lt;&amp;amp;pio&amp;gt;;&lt;br /&gt;
        interrupts = &amp;lt;4 10 IRQ_TYPE_EDGE_FALLING&amp;gt;; /* (PE10) */&lt;br /&gt;
        pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
        pinctrl-0 = &amp;lt;&amp;amp;ts_reset_pin&amp;gt;;&lt;br /&gt;
        irq-gpios = &amp;lt;&amp;amp;pio 4 10 GPIO_ACTIVE_HIGH&amp;gt;; /* (PE10) */&lt;br /&gt;
        reset-gpios = &amp;lt;&amp;amp;pio 4 9 GPIO_ACTIVE_HIGH&amp;gt;; /* RST (PE9) */&lt;br /&gt;
        /* touchscreen-swapped-x-y */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;pio {&lt;br /&gt;
    ts_reset_pin: ts_reset_pin@0 {&lt;br /&gt;
        pins = &amp;quot;PE9&amp;quot;;&lt;br /&gt;
        function = &amp;quot;gpio_out&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若测试的触摸屏的 xy 方向颠倒，请添加或去掉 gt911 节点下的 touchscreen-swapped-x-y 属性。&lt;br /&gt;
&lt;br /&gt;
[https://item.taobao.com/item.htm?spm=a230r.1.14.87.57863beca0zG7h&amp;amp;id=589629409888&amp;amp;ns=1&amp;amp;abbucket=8#detail iTop 4412]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 长条屏 ===&lt;br /&gt;
&lt;br /&gt;
* 4.58 inch, 320x960, ST7701S, SPI+RGB, 40.37x117.9x2.08mm, Display 36.77x110.3mm, 40pin, 3.3V power supply&lt;br /&gt;
** 非 RGB 直驱，需通过 ST7701 转驱。得事先配置了 ST7701 才能够通过 RGB 口驱动。&lt;br /&gt;
** ST7701一上电需要10s-20s来启动，上电后最好延时20s再启动配置&lt;br /&gt;
** [https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628 LittleVGL ST7701][https://www.nxpic.org.cn/module/forum/thread-622198-1-1.html 捡屏幕第一弹—5寸480x854 ST7701屏]&lt;br /&gt;
&lt;br /&gt;
驱动实例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//ST7701S+AUO4.58&lt;br /&gt;
SPI_WriteComm (0xFF);     &lt;br /&gt;
SPI_WriteData (0x77); &lt;br /&gt;
SPI_WriteData (0x01);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x13);   &lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4.95 inch, 480x854, ST7701, SPI+RGB, 65x119x2.08mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI TFT 屏 ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.cnblogs.com/twzy/p/15160836.html SPI TFT屏幕修改与移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ESP8089 ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/notabucketofspam/ESP8089-SPI&lt;br /&gt;
* https://github.com/al177/esp8089&lt;br /&gt;
* https://whycan.com/t_5870.html&lt;br /&gt;
* https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
dts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;spi1 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    esp8089@0 {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        compatible = &amp;quot;boss,esp8089&amp;quot;;&lt;br /&gt;
        spi-cpol;&lt;br /&gt;
        spi-cpha;&lt;br /&gt;
        reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
        spi-max-frequency = &amp;lt;30000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        reset= &amp;lt;104&amp;gt;;&lt;br /&gt;
        interrupt= &amp;lt;103&amp;gt;;&lt;br /&gt;
        debug= &amp;lt;0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB OTG ===&lt;br /&gt;
&lt;br /&gt;
'''驱动'''通过读取 USB_ID 的电平，来判断是 host 模式还是 device 模式。&lt;br /&gt;
&lt;br /&gt;
micro-USB 口： pin1 - vcc，pin4 - usb_id, pin5 - gnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB_ID 检测脚，在 dts 配置为 PE2，默认 active high&lt;br /&gt;
* 当检测脚为高电平时，'''驱动 (driver)'''驱使硬件进入 device mode&lt;br /&gt;
* 当检测脚为低电平时，'''驱动 (driver)'''驱使硬件进入 host mode&lt;br /&gt;
* TeslaDR（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 10K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* nano 板（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 47K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* 当把 MicroUSB 的 usb_id 脚拉低时，即将 PE2 拉低，驱动驱使硬件进入 host mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USB Hub chip: gl850/gl850g&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device Mode (USB Gadget) ====&lt;br /&gt;
&lt;br /&gt;
F1C 作为 USB 设备，连接到主机。如果是 Linux 主机需要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo modprobe rndis_host&lt;br /&gt;
$ ifconfig usb0 192.168.3.1 up&lt;br /&gt;
&lt;br /&gt;
maybe:&lt;br /&gt;
$ sudo ifconfig enp0s20f0u3 192.168.3.1 up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作为客户端的 F1C 则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://blog.csdn.net/lan120576664/article/details/101081608&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的spi-flash系统编译创建全过程]&lt;br /&gt;
* [https://www.lotlab.org/2018/07/29/record-of-using-licheepi-part-2-using-linux-gadget/ 使用 Linux Gadget 复合设备共享网络与虚拟串口]&lt;br /&gt;
* [https://whycan.com/t_2889.html LicheePi Nano Usb复合设备RNDIS功能问题]&lt;br /&gt;
* [http://www.iipcb.com/blog/F1C100S_USB_DriverDebug1.html USB 裸机驱动]&lt;br /&gt;
&lt;br /&gt;
* https://irq5.io/2016/12/22/raspberry-pi-zero-as-multiple-usb-gadgets/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB 条码枪  ===&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_3963.html&lt;br /&gt;
* [https://whycan.com/t_6902.html 编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Serial ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_USB_SERIAL=y&lt;br /&gt;
CONFIG_USB_SERIAL_CH341=m&lt;br /&gt;
CONFIG_USB_SERIAL_CP210X=m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CH341 lsusb: 0x1a86:7523  (drivers/usb/serial/ch341.c)&lt;br /&gt;
* CP210x lsusb:  (drivers/usb/serial/cp210x.c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4G ===&lt;br /&gt;
&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
* [http://oldask.openluat.com/article/37 Air720模块Linux USB驱动以及PPP拨号说明]&lt;br /&gt;
* [http://oldask.openluat.com/article/79 Air720模块在linux设备上的RNDIS网卡使用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://wiki.jackslab.org/EMTC#AT Air724 AT 接口]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
入网不成功，可能导致枚举 usb 设备失败:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    7.780813] usb 1-1: new high-speed USB device number 2 using musb-hdrc&lt;br /&gt;
[    7.940764] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.210885] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.480803] usb 1-1: new high-speed USB device number 3 using musb-hdrc&lt;br /&gt;
[    8.630701] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.900700] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    9.020862] usb usb1-port1: attempt power cycle&lt;br /&gt;
[    9.510701] usb 1-1: new high-speed USB device number 4 using musb-hdrc&lt;br /&gt;
[    9.950713] usb 1-1: device not accepting address 4, error -71&lt;br /&gt;
[   10.100707] usb 1-1: new high-speed USB device number 5 using musb-hdrc&lt;br /&gt;
[   10.540723] usb 1-1: device not accepting address 5, error -71&lt;br /&gt;
[   10.546757] usb usb1-port1: unable to enumerate USB device&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
去除 sim 卡一样的错误 log，插入一个新卡一样，换 4G sim 卡一样的现象&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&lt;br /&gt;
ESP8266 接线：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
F1C200S			ESP8266Ex				ESP-12F&lt;br /&gt;
SPI_MOSI		SDIO_CMD(GPIO 11)		ESP_CS&lt;br /&gt;
SPI_MISO		SDIO_DATA_0(GPIO 7)		ESP_MISO&lt;br /&gt;
SPI_CLK			SDIO_CLK(GPIO 6)		ESP_CLK&lt;br /&gt;
WIFI_RESET(PD16/IO8)	CHOP_PU					ESP_EN(RST)&lt;br /&gt;
&lt;br /&gt;
SPI_CS			SDIO_DATA_3(GPIO 10)	ESP_GPIO10&lt;br /&gt;
WiFi_INT(PD18)	SDIO_DATA_1(GPIO 8)		ESP_MOSI&lt;br /&gt;
&lt;br /&gt;
精简 PIN，则：SDIO_DATA_3 (12F_GPIO10, SPI-CS) 拉低、SDIO_DATA_1 (12F_MOSI, WiFi_INT) 悬空&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot select:'''&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO15 (MTDO)&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO0&lt;br /&gt;
* GND &amp;lt;--- ESP8266_GPIO2&lt;br /&gt;
&lt;br /&gt;
ESP8266 Reset 后，通过判断如下管脚的状态来决定启动模式：  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MTDO 	GPIO0 	GPIO2 	Mode 	Description&lt;br /&gt;
L 	L 	H 	UART 	串口刷机&lt;br /&gt;
L 	H 	H 	Flash 	SPI Flash 正常启动&lt;br /&gt;
H 	x 	x 	SDIO 	SD-card 启动&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTDO 为 GPIO15&lt;br /&gt;
&lt;br /&gt;
启动时串口输出的 'boot mode:(x, y)' ， x 的低三位对应  {MTDO, GPIO0, GPIO2}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_2179.html  RTL8189 / rtl8723bs&lt;br /&gt;
* https://whycan.com/t_4149.html ESP8089 https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# ls -l /usr/lib/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3.19.13&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200.26.0&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200.26.0&lt;br /&gt;
# ls -l /usr/sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        296866 Jan  1  1970 wpa_cli&lt;br /&gt;
-rwx------    1 root     root        185953 Jan  1  1970 wpa_passphrase&lt;br /&gt;
-rwx------    1 root     root       9471254 Jan  1  1970 wpa_supplicant&lt;br /&gt;
# ls -l /sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwconfig&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwgetid&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwlist&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwpriv&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwspy&lt;br /&gt;
# ls -l /etc/ | grep 1970&lt;br /&gt;
-rw-------    1 root     root            96 Jan  1  1970 wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nginx:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep nginx&lt;br /&gt;
output/target/usr/sbin/nginx&lt;br /&gt;
output/target/etc/nginx&lt;br /&gt;
output/target/etc/nginx/win-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf&lt;br /&gt;
output/target/etc/nginx/mime.types&lt;br /&gt;
output/target/etc/nginx/koi-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi_params.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf.default&lt;br /&gt;
output/target/etc/nginx/fastcgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params&lt;br /&gt;
output/target/etc/nginx/uwsgi_params.default&lt;br /&gt;
output/target/etc/nginx/mime.types.default&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf&lt;br /&gt;
output/target/etc/nginx/uwsgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params.default&lt;br /&gt;
output/target/etc/nginx/koi-win&lt;br /&gt;
output/target/etc/init.d/S50nginx&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre&lt;br /&gt;
output/target/usr/lib/libpcre.a&lt;br /&gt;
output/target/usr/lib/libpcre.so&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcreposix.a&lt;br /&gt;
output/target/usr/lib/libpcreposix.so&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0.0.7&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcrecpp.a&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0.0.2&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/usr | grep html | grep -v pcre&lt;br /&gt;
output/target/usr/html/50x.html&lt;br /&gt;
output/target/usr/html/index.html&lt;br /&gt;
&lt;br /&gt;
$ scp -r output/target/usr/sbin/nginx root@192.168.1.204:/usr/sbin/&lt;br /&gt;
$ scp output/target/usr/lib/libpcre.so.1* root@192.168.1.204:/lib/&lt;br /&gt;
libpcre.so.1                                                                                               &lt;br /&gt;
libpcre.so.1.2.12 &lt;br /&gt;
$ scp -r output/target/etc/nginx root@192.168.1.204:/etc/&lt;br /&gt;
$ scp -r output/target/etc/init.d/S50nginx  root@192.168.1.204:/etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
CAN Gateway: https://whycan.com/t_6980.html&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/lushengchu_luis/article/details/77099239&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/a13698709128/article/details/104484467&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/weixin_59676688/article/details/124457092&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 摄像头 ==&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_5612.html 分享F1C100S的TVD源码，TVIN0接CVBS摄像头采集数据显示到LCD屏]&lt;br /&gt;
* [https://whycan.com/t_6902.html 站在微凉大侠的肩膀上，编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
* [https://whycan.com/t_2667.html 荔枝派zero 摄像头ov2640咸鱼使用（踩坑） 持续更新]&lt;br /&gt;
* [https://whycan.com/t_5327.html F1C200S使用OV2640拍照]&lt;br /&gt;
* [https://whycan.com/t_4056.html f1c100s的引脚怎么接csi摄像头]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install python-setuptools&lt;br /&gt;
$ git clone https://github.com/Lichee-Pi/u-boot.git&lt;br /&gt;
$ cd u-boot&lt;br /&gt;
# 切换到 Nano 分支&lt;br /&gt;
$ git checkout nano-v2018.01&lt;br /&gt;
&lt;br /&gt;
# 设定各项默认配置为 nano 的spiflash支持版，若不带spi-flash的板子，请换成 licheepi_nano_defconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sunxi-tools ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git&lt;br /&gt;
$ cd sunxi-tools&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果出现：fel_lib.c:26:20: fatal error: libusb.h: No such file or directory，那需要安装libusb：&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libusb-1.0-0-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
新到的一片 F1C 设备 Nor/Nand/SD 卡 都无系统，则自动进入 fel 模式，可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 查看芯片信息&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
# FEL 模式失败&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
ERROR: Allwinner USB FEL device not found!&lt;br /&gt;
&lt;br /&gt;
# 列出所有芯片的信息&lt;br /&gt;
$ sudo sunxi-fel -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时有两种方式进行程序下载：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 1. 加载并运行之&lt;br /&gt;
$ sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin  # 单次运行&lt;br /&gt;
&lt;br /&gt;
# 2. 烧写入 spi-flash &lt;br /&gt;
$ sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 加载并执行 uboot 的 spl&lt;br /&gt;
$ sudo sunxi-fel spl [文件名]&lt;br /&gt;
&lt;br /&gt;
# 把文件内容写入内存指定地址(-p 是显示写入进度) &lt;br /&gt;
$ sudo sunxi-fel -p write [地址] [文件名]&lt;br /&gt;
&lt;br /&gt;
# 调用指定地址的函数&lt;br /&gt;
$ sudo sunxi-fel exec [地址]&lt;br /&gt;
&lt;br /&gt;
# 显示spiflash的信息&lt;br /&gt;
$ sudo sunxi-fel spiflash-info&lt;br /&gt;
&lt;br /&gt;
# 读取spiflash指定地址的数据并写入到文件&lt;br /&gt;
$ sudo sunxi-fel spiflash-read [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&lt;br /&gt;
# 写入指定文件的指定长度的内容到spiflash的指定地址&lt;br /&gt;
$ sudo sunxi-fel spiflash-write [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;如何进入 FEL mode：&amp;lt;/b&amp;gt; http://wiki.jackslab.org/F1C#FEL_mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
* http://nano.lichee.pro/build_sys/rootfs.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Buildroot ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget https://buildroot.org/downloads/buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ tar xvf buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ cd buildroot-2017.08/&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Buildroot Quick Start]]&lt;br /&gt;
&lt;br /&gt;
.config files: https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/buildroot.config&lt;br /&gt;
&lt;br /&gt;
快速添加一个 helloworld 包：http://www.chip-community.org/index.php/Startup_Program_with_Buildroot&lt;br /&gt;
&lt;br /&gt;
重 build 某个包：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-rebuild&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-dirclean&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-reinstall&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-source&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-show-depends&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-extract&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-staging&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-target&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-patch&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenWRT ====&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2573.html openwrt into spi-flash]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b licheepi-nano https://github.com/qinfengling/openwrt&lt;br /&gt;
cat &amp;gt; .config &amp;lt;&amp;lt; EOL&lt;br /&gt;
CONFIG_TARGET_sunxi=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9_DEVICE_suniv-f1c100s-licheepi-nano=y&lt;br /&gt;
CONFIG_DEVEL=y&lt;br /&gt;
CONFIG_BRCMFMAC_SDIO=y&lt;br /&gt;
CONFIG_BRCMFMAC_USB=y&lt;br /&gt;
CONFIG_DRIVER_11AC_SUPPORT=y&lt;br /&gt;
CONFIG_DRIVER_11N_SUPPORT=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_DEBUGFS=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_MESH=y&lt;br /&gt;
CONFIG_PACKAGE_brcmfmac-firmware-usb=y&lt;br /&gt;
CONFIG_PACKAGE_hostapd-common=y&lt;br /&gt;
CONFIG_PACKAGE_iw=y&lt;br /&gt;
CONFIG_PACKAGE_iwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-ahci-platform=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmfmac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmutil=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-cfg80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-libphy=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mac80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mmc=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-nls-base=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-of-mdio=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-rtc-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-scsi-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-sun4i-emac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-usb-core=y&lt;br /&gt;
CONFIG_PACKAGE_libiwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_swconfig=y&lt;br /&gt;
CONFIG_PACKAGE_wireless-regdb=y&lt;br /&gt;
CONFIG_PACKAGE_wpad-mini=y&lt;br /&gt;
CONFIG_SOFT_FLOAT=y&lt;br /&gt;
CONFIG_TARGET_OPTIONS=y&lt;br /&gt;
EOL&lt;br /&gt;
$ ./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;br /&gt;
$ make defconfig&lt;br /&gt;
$ make world&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/zhangheyang/openwrt&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* https://qinfengling.pro/build_openwrt_image_for_licheepi_nano.html&lt;br /&gt;
* [https://whycan.com/t_4279.html 尝试给f1c100s编译openwrt]&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的SPI-Flash系统编译创建全过程][https://whycan.com/t_2179.html 2]&lt;br /&gt;
* [[OpenWRT_Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig&lt;br /&gt;
&lt;br /&gt;
System configurration ---&amp;gt; [ ] Install timezone info&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/timezone&lt;br /&gt;
Etc/UTC&lt;br /&gt;
&lt;br /&gt;
$ ls -l /etc/localtime&lt;br /&gt;
/etc/localtime -&amp;gt; /usr/share/zoneinfo/Etc/UTC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deploy TF ===&lt;br /&gt;
&lt;br /&gt;
可以直接只用 TF 卡，分区时，前 3MB 留给 uboot 和 environments，第一个分区从 3MB 处开始&lt;br /&gt;
&lt;br /&gt;
'''给 U-Boot 的前 3MB:'''&lt;br /&gt;
&lt;br /&gt;
[[文件:F1c.tf.layout.png]]&lt;br /&gt;
&lt;br /&gt;
https://linux-sunxi.org/Bootable_SD_card&lt;br /&gt;
&lt;br /&gt;
需要将 uboot 写到 TF 卡 8KB 开始的位置&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''第一、二分区：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdX   # 进行分区操作&lt;br /&gt;
# 若已存分区即按 d 删除各个分区&lt;br /&gt;
# &lt;br /&gt;
# 通过 n 新建分区，第一分区16M，类型 c (W95 FAT32 LBA)，从 1MB 处 (start sector 2048) 开始，+16M；第二分区 +183M&lt;br /&gt;
# w 保存写入并退出&lt;br /&gt;
$ sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT&lt;br /&gt;
$ sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''第一分区：'''&lt;br /&gt;
* boot.scr    # u-boot 使用&lt;br /&gt;
* zImage&lt;br /&gt;
* suniv-f1c100s-licheepi-nano.dtb&lt;br /&gt;
&lt;br /&gt;
'''第二分区：'''&lt;br /&gt;
* 根文件系统内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''boot.scr 之生成：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat boot.cmd&lt;br /&gt;
setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw&lt;br /&gt;
load mmc 0:1 0x80C00000 suniv-f1c100s-ltegw.dtb&lt;br /&gt;
load mmc 0:1 0x80008000 zImage&lt;br /&gt;
bootz 0x80008000 - 0x80C00000&lt;br /&gt;
$ sudo apt install u-boot-tools&lt;br /&gt;
$ mkimage -C none -A arm -T script -d boot.cmd boot.scr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上电启动流程 ==&lt;br /&gt;
&lt;br /&gt;
After power-up, the F1C100s starts to fetch instructions from address '''0xFFFF_0000''' which is where the '''BROM''' is located at. It's an internal integrated 32 KB ROM Chip (Boot ROM or BROM).&lt;br /&gt;
&lt;br /&gt;
The BROM split up into two parts: The first part (at 0xFFFF_0000) is the '''FEL''' mode and the second is the '''eGON.BRM''' (located at 0xFFFF_4000).&lt;br /&gt;
&lt;br /&gt;
The reset vector is located at the very begining of FEL mode: at address 0xFFFF_0000. On reset, it jumps to 0xFFFF_0028 where it loads 0xFFFF_4000 (eGON.BRM) into the program counter to be executed next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== eGON Boot ===&lt;br /&gt;
&lt;br /&gt;
The eGON Boot ROM performs a few tasks:&lt;br /&gt;
&lt;br /&gt;
# do some [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L19 co-processor setup] ([http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbciiaf.html c15], (virtual) System Control Coprocessor).&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L23 disables] the WatchDog Timer&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L28 setups] CPU, AXI, AHB and APB0 clocks&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L34 enables] AHB Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L38 enables] APB0 Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L40 sets] the Stack Pointer to 32K&lt;br /&gt;
# then it [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L41 jumps] to [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L84 'boot'] which immediately [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L86 jumps to] [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot]&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot] setups up some registers, then [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2560 checks the status pin] (often called FEL pin, BSP pin or '''uboot''')&lt;br /&gt;
## if the pin is low (connected to GND) [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L90 executes] [[FEL]] mode at 0xFFFF_0020.&lt;br /&gt;
##  If the pin is high it continues trying to boot from the following media and on failure continues to the next in order.&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L91 SD Card0] also known as [[A10/CCM#CCM_MMC0_CLK|MMC0]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L98 Internal NAND flash] also known as [[A10/CCM#CCM_NAND_CLK|NAND]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L104 SD Card2] also known as [[A10/CCM#CCM_MMC2_CLK|MMC2]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L111 SPI connected NOR flash] also known as [[A10/CCM#CCM_SPI0_CLK|SPI]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s##L117 If all fails], '''FEL/USBBoot''' mode is [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L120 executed] from 0xFFFF_0020&lt;br /&gt;
&lt;br /&gt;
As can be seen, the SoC has several ways to boot and a lot would need to go wrong or 'fail' before entering FEL/USBBoot mode. This is especially important if there is a valid header in the NAND flash. Obviously this can be abused, by corrupting the header and thus forcing failure. If no other boot options are available, then FEL mode should be the final result. As a bypass mechanism, the A10 has the so called ''Boot Select Pin (BSP)''. This pin is normally internally pulled up by a 50KΩ resistor. If the pin is pulled low to GND, the A10 will try to boot into FEL/USBBoot mode. Otherwise the above boot-order will be tried.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
boot-&amp;gt; check fel key pressed (yes)--&amp;gt; FEL mode (boot from USB OTG)&lt;br /&gt;
                          \  &lt;br /&gt;
                      (no) \&lt;br /&gt;
                            \-------&amp;gt; 1) try to boot from SMHC0 (SD card)&lt;br /&gt;
                                      2) try to boot from SMHC2 (eMMC)&lt;br /&gt;
                                      3) try to boot from SPI0 (SPI NOR Flash)&lt;br /&gt;
                                      4) FEL mode (boot from USB OTG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  FEL mode ===&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F1C 无 Boot Select Pin 会依次尝试 MMC0 ---&amp;gt; NAND ---&amp;gt; MMC2 ---&amp;gt; NOR，如果启动都失败，就会进入 FEL mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方参考设计是将 PC2 短接到 GND 用了个按钮标记为 BOOT，PC2 所在的 SPI0 接的是 系统 eMMC，作为个 参考，PC2  =  SPI0_MISO = SDC1-D0，短接到 GND 即可使 eMMC 失效&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 短接 flash 的 1、4 两脚，重新上电，上电后松开短接，即可重新进入 fel 模式&lt;br /&gt;
* 在启动到内核前，回车进入 uboot，执行 sf probe 0;sf erase 0 0x100000;reset 即可重新进入 fel 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEL mode 下 PC 可用 sunxi-fei 工具通过 USB 口与 SoC 通信&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel uboot /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel -p spiflash-write 0 /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 下 erase flash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;gt; sf probe 0    # init flash device&lt;br /&gt;
&amp;gt; sf erase 0 0x100000    # erase 1MB flash&lt;br /&gt;
&amp;gt; reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
* http://linux-sunxi.org/FEL&lt;br /&gt;
* http://linux-sunxi.org/FEL/USBBoot&lt;br /&gt;
* http://linux-sunxi.org/BROM&lt;br /&gt;
* http://linux-sunxi.org/Sunxi-tools&lt;br /&gt;
* http://nano.lichee.pro/get_started/first_eat.html#id6&lt;br /&gt;
* [https://whycan.cn/t_717.html F1C100s入坑记录]&lt;br /&gt;
* [https://whycan.cn/t_3138.html 尝试从零构建F1C100s开发环境]&lt;br /&gt;
* https://whycan.com/t_2179.html spi-flash &amp;amp; wifi &amp;amp; usb-gad&lt;br /&gt;
* [https://whycan.com/t_6402.html &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot failed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# reboot&lt;br /&gt;
# Stopping network: OK&lt;br /&gt;
Saving random seed... done.&lt;br /&gt;
Stopping logging: OK&lt;br /&gt;
The system is going down NOW!&lt;br /&gt;
Sent SIGTERM to all processes&lt;br /&gt;
Sent SIGKILL to   20.550344 reboot: Restarting system&lt;br /&gt;
   21.549981 Reboot failed -- System halted&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原因：未使能看门狗。系统 Restart 时，是利用取消喂狗来触发看门狗超时，从而引发复位。&lt;br /&gt;
&lt;br /&gt;
修正： 内核配置时，选择 &lt;br /&gt;
&lt;br /&gt;
  Device Drivers → Watchdog Timer Support  → WatchDog Timer Driver Core 和 Allwinner SoCs watchdog support&lt;br /&gt;
&lt;br /&gt;
确保如下选项打开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_WATCHDOG=y&lt;br /&gt;
CONFIG_WATCHDOG_CORE=y&lt;br /&gt;
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y&lt;br /&gt;
CONFIG_SUNXI_WATCHDOG=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重新编译内核即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
* [http://linux-sunxi.org/images/b/ba/F1C100s_Datasheet_V1.0.pdf F1C100s Datasheet 2015]&lt;br /&gt;
* [http://dl.linux-sunxi.org/F1C100/Allwinner_F1C100_datasheet_20110331.pdf F1C100 Datasheet 2011]&lt;br /&gt;
* [https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf F1C600 User Manual]&lt;br /&gt;
* [http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf H3 Datasheet]&lt;br /&gt;
* [https://debugdump.com/files/20171005/13/Allwinner_V3s_Datasheet_V1.0.pdf V3S datasheet] [http://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf V3s datasheet]&lt;br /&gt;
&lt;br /&gt;
*  http://nano.lichee.pro&lt;br /&gt;
* http://tang.lichee.pro&lt;br /&gt;
&lt;br /&gt;
* [https://elinux.org/Device_Tree_Reference Device Tree]&lt;br /&gt;
* [http://nano.lichee.pro/build_sys/devicetree.html 设备树简介]&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_6402.html 自制基于F1C100s/F1C200s的M5Pi]&lt;br /&gt;
* [https://whycan.com/t_6388.html F1C100S开发了一个项目，原始技术实现，裸奔XUI GUI框架]&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2736.html 投屏软件scrcpy在Linux上的移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/F1C</id>
		<title>F1C</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/F1C"/>
				<updated>2026-03-10T03:42:44Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* sunxi-tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Core overview ==&lt;br /&gt;
&lt;br /&gt;
* F1C100s / F1C200s&lt;br /&gt;
** USB 2.0 OTG, UART x3, SPI x2, TWI x3, &lt;br /&gt;
&lt;br /&gt;
* V831 &amp;lt;---&lt;br /&gt;
** USB 2.0 OTG, UART x4, SPI x2, TWI x4, GPIO x4&lt;br /&gt;
&lt;br /&gt;
* V851S (64MB), V851SE (64MB, SiP EPHY, no display),  V851S3 (128MB)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x6&lt;br /&gt;
&lt;br /&gt;
* V853 / V853s (LFBGA, no SiP RAM)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F1C100s Overview ==&lt;br /&gt;
&lt;br /&gt;
* ARM926-EJS, up to 900MHz&lt;br /&gt;
* 32KB I-Cache, 16KB D-Cache, 5-stage pipeline&lt;br /&gt;
* 32MB SiP DDR1 (F1C200s is 64MB SiP DDR1)&lt;br /&gt;
&lt;br /&gt;
* RGB LCD interface&lt;br /&gt;
* USB 2.0 OTG&lt;br /&gt;
* SDIO&lt;br /&gt;
* SPI x2 (SPI_SCLK: 3KHz ~ 100MHz)&lt;br /&gt;
* TWI x3&lt;br /&gt;
* UART x3&lt;br /&gt;
* TV out x 1, TV in x 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PWM x2&lt;br /&gt;
* LRADC x1&lt;br /&gt;
* Speaker x2 + Mic x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-blockdiagram.jpg | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-typical-app.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C-roadmap.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-pinmap.jpg | 650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 荔枝派 Pin Map ===&lt;br /&gt;
&lt;br /&gt;
[[文件:Lichee-nano-pin-map.png]]&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** UART0_RX --- PE0&lt;br /&gt;
** UART0_TX --- PE1&lt;br /&gt;
** dtb 中默认系统启动的串口 serial0:115200n8&lt;br /&gt;
** UART1_RX --- PD3 --- D5&lt;br /&gt;
** UART1_TX --- PD4 --- D6&lt;br /&gt;
** UART2_RX --- PD14 --- D20&lt;br /&gt;
** UART2_TX --- PD13 --- D19&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SPI1&lt;br /&gt;
** PA0 - SPI1_CS&lt;br /&gt;
** PA1 - SPI1_MOSI&lt;br /&gt;
** PA2 - SPI1_SCK&lt;br /&gt;
** PA3 - SPI1_MISO&lt;br /&gt;
** PE3 -- Reset -- D0&lt;br /&gt;
** PE4 -- Interrupt -- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB&lt;br /&gt;
** 右上角，PCLK 右边为 USB_DM (D-)&lt;br /&gt;
** 右上角，PCLK 左边为 USB_DP (D+)&lt;br /&gt;
** USB_ID，拉低为主机模式，拉高为设备模式。Nano 开发板将 USB_ID 47K 上拉到 3V3，同时 USB_ID 和 PE2 相连。dts 设置使用 PE2 作为检测管脚（默认 active high，即：高电平）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进入系统后，可通过改变 PE2 的高低电平来控制 USB 的模式。比如默认 dtb 设置 PE2 为 active high，则进系统后，设置 PE2 为低电平，则 USB 会切换为主机模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I2C0&lt;br /&gt;
** PE11 --- SCL&lt;br /&gt;
** PE12 --- SDA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* GPIO&lt;br /&gt;
** PE3 --- D0&lt;br /&gt;
** PE4 --- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/Lichee_nano.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
* Power&lt;br /&gt;
** VCC-CORE: 1.0 - 1.2V&lt;br /&gt;
** VCC-DRAM: 2.3 - 2.7V&lt;br /&gt;
** AVCC: 2.5 - 3.1V&lt;br /&gt;
** VCC-IO: 3.0 - 3.6V&lt;br /&gt;
** VCC-HP: 3.0 - 3.5V&lt;br /&gt;
** VCC-TV: 3.0 - 3.5V&lt;br /&gt;
** VCC-USB: 3.0 - 3.5V&lt;br /&gt;
&lt;br /&gt;
* SIP DDR1&lt;br /&gt;
** SVREF (P33) &lt;br /&gt;
&lt;br /&gt;
* 音频&lt;br /&gt;
** HPL, HPR 左右声道；HPCOM, HPCOMFP 接耳机插座&lt;br /&gt;
** LINEIN：可用于连接电吉他、电子琴、合成器等外界设备的音频信号，由于这些设备本身输出功率就比较大，因此需要连接到 Line in 端口录音，当然使用它们录音从某种程度上也可以被称为外部设备的“内录”。一般您使用的声卡越好，Line in里的噪音就会越低，录制效果也会比较好。&lt;br /&gt;
** MICIN：用于连接麦克风，和 Line in 的区别在于它有前置放大器，麦克风本身输出功率小，因此必须要有一个放大设备来放大音频信号&lt;br /&gt;
** VRA1, VRA2, FMINL, FMINR&lt;br /&gt;
&lt;br /&gt;
* TV&lt;br /&gt;
** TV_OUT&lt;br /&gt;
** TV_VRN, TV_VRP, TVIN1, TVIN0&lt;br /&gt;
&lt;br /&gt;
* KEY INPUT&lt;br /&gt;
** LRADC0: 6bit resolution; 0 - 2V, 250Hz; 3.0/2^6 = 0.047&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PE11 CLK Out ==&lt;br /&gt;
&lt;br /&gt;
PE11 管脚可以输出 clkout，给 CIF 摄像头的提供时钟源，节约成本&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;clk-mux@0x01c000f0&amp;quot;: {&lt;br /&gt;
		&amp;quot;parent&amp;quot;: [&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;losc&amp;quot;, &amp;quot;value&amp;quot;: 0 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;osc32k&amp;quot;, &amp;quot;value&amp;quot;: 1 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;hosc&amp;quot;, &amp;quot;value&amp;quot;: 2 }&lt;br /&gt;
		],&lt;br /&gt;
		&amp;quot;name&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 24, &amp;quot;width&amp;quot;: 2,&lt;br /&gt;
		&amp;quot;default&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;hosc&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;clk-ratio@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 20, &amp;quot;width&amp;quot;: 2, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-divider@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 8, &amp;quot;width&amp;quot;: 5, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-gate@0x01c000f0&amp;quot;: {&amp;quot;parent&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 31, &amp;quot;invert&amp;quot;: false, &amp;quot;default&amp;quot;: { &amp;quot;enable&amp;quot;: false } },&lt;br /&gt;
	&amp;quot;clk-link&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;link-clkout&amp;quot; },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可输出24MHZ，12MHZ，6MHZ。。。&lt;br /&gt;
&lt;br /&gt;
参考 patch: https://gitee.com/xboot/xboot/commit/245601d534de73748a37f05531ff7a11bdc0545c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
调试消息控制台设置：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
0 = KERN_EMERG      /* 系统即将崩溃 */&lt;br /&gt;
1 = KERN_ALERT      /* 需要立即关注 */&lt;br /&gt;
2 = KERN_CRIT       /* 紧急情况 */&lt;br /&gt;
3 = KERN_ERR        /* 错误消息 */&lt;br /&gt;
4 = KERN_WARNING    /* 警告消息 */&lt;br /&gt;
5 = KERN_NOTICE     /* 正常但需要注意 */&lt;br /&gt;
6 = KERN_INFO       /* 信息性消息 */&lt;br /&gt;
7 = KERN_DEBUG      /* 调试消息 */&lt;br /&gt;
&lt;br /&gt;
# 设置控制台级别&lt;br /&gt;
echo 6 &amp;gt; /proc/sys/kernel/printk        # 只显示 0-6 级别的消息&lt;br /&gt;
echo 8 &amp;gt; /proc/sys/kernel/printk        # 显示更多调试信息&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/printk        # 只显示紧急消息&lt;br /&gt;
&lt;br /&gt;
dmesg -n 8  # 效果同 echo 8 &amp;gt; /proc/sys/kernel/printk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone https://github.com/Icenowy/linux.git&lt;br /&gt;
&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
# 添加下面两行&lt;br /&gt;
192.30.253.112  github.com&lt;br /&gt;
151.101.73.194 github.global.ssl.fastly.net&lt;br /&gt;
&lt;br /&gt;
# 可自行通过dns检测网站检测github.global.ssl.fastly.net，更换为更快的ip地址&lt;br /&gt;
# 完整拉取linux极大，建议只拉取单层分支，减少等待时间：&lt;br /&gt;
$ git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.config: http://dl.sipeed.com/LICHEE/Nano/SDK/config    http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm menuconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8    #请自行修改编译线程数&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
arch/arm/boot/dts/suniv.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s-tesladr.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''arch/arm/boot/dts/Makefile:'''&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
dtb-$(CONFIG_MACH_SUNIV) += \&lt;br /&gt;
    suniv-f1c100s-ltegw.dtb \&lt;br /&gt;
    suniv-f1c100s-tesladr.dtb&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
查看 DTS 中对应的设备用了哪些关键字：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ grep -r of_property drivers/spi/ | grep spi-max-frequency&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SPI:'''&lt;br /&gt;
&lt;br /&gt;
SPI_SCLK: 3KHz ~ 100MHz&lt;br /&gt;
* SPI Nor Flash: spi-max-frequency = &amp;lt;50000000&amp;gt;; (50MHz)&lt;br /&gt;
* SPI 127x: spi-max-frequency = &amp;lt;10000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# CONFIG_SPI_SUN4I is not set&lt;br /&gt;
CONFIG_SPI_SUN6I=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
drivers/spi/spi-bitbang.o&lt;br /&gt;
drivers/spi/spidev.o&lt;br /&gt;
drivers/spi/spi-gpio.o&lt;br /&gt;
drivers/spi/spi.o&lt;br /&gt;
drivers/spi/spi-sun6i.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 leds {&lt;br /&gt;
             compatible = &amp;quot;gpio-leds&amp;quot;;&lt;br /&gt;
             blue_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:blue:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 4 GPIO_ACTIVE_LOW&amp;gt;; /* PE4 */&lt;br /&gt;
             };&lt;br /&gt;
             green_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:green:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 5 GPIO_ACTIVE_LOW&amp;gt;; /* PE5 */&lt;br /&gt;
                     default-state = &amp;quot;on&amp;quot;;&lt;br /&gt;
             };&lt;br /&gt;
             red_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:red:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 5 6 GPIO_ACTIVE_LOW&amp;gt;; /* PE6 */&lt;br /&gt;
             };&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
命令行方式：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat gpio.sh&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
if [ ! -e /sys/class/gpio/gpio$1 ]; then&lt;br /&gt;
    echo $1 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio$1/direction&lt;br /&gt;
echo $2 &amp;gt; /sys/class/gpio/gpio$1/value&lt;br /&gt;
&lt;br /&gt;
$ ./gpio.sh 105 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# A: 0&lt;br /&gt;
# B: 1&lt;br /&gt;
# C: 2&lt;br /&gt;
# D: 3&lt;br /&gt;
# E: 4&lt;br /&gt;
 * PB5 = 32*1 + 5 = 37&lt;br /&gt;
 * PC6= 32*2 + 6 = 70&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * PB5 = 32*1 + 5&lt;br /&gt;
 * PC6= 32*2 + 6&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
*/&lt;br /&gt;
gpio_direction_output(105, 0);     // 设置 PD9 为输出状态, 默认输出低电平&lt;br /&gt;
gpio_set_value(105, 1);                // 高电平&lt;br /&gt;
gpio_set_value(105, 0);                // 低电平&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
* pcf8563: 0x51&lt;br /&gt;
* sht3x: 0x44 / 0x45&lt;br /&gt;
* sht2x: 0x40&lt;br /&gt;
* sts3x: 0x4A / 0x4B&lt;br /&gt;
* pc10: 0x28&lt;br /&gt;
* pc10nsa: 0x6D&lt;br /&gt;
* pcz1: 0x28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TeslaDR:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        /* 在 pio 节点下，添加 i2c 引脚定义 */&lt;br /&gt;
        i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PE11&amp;quot;, &amp;quot;PE12&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M6:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
            i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PD12&amp;quot;, &amp;quot;PD0&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
            };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        i2c0: i2c@1C27000 {&lt;br /&gt;
            compatible = &amp;quot;allwinner,sun6i-a31-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x01C27000 0x400&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;7&amp;gt;;&lt;br /&gt;
            clocks = &amp;lt;&amp;amp;ccu CLK_BUS_I2C0&amp;gt;;&lt;br /&gt;
            resets = &amp;lt;&amp;amp;ccu RST_BUS_I2C0&amp;gt;;&lt;br /&gt;
            pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
            pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
            #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
            #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCL 和 SDA 必须 10K / 1K 拉高，否则 kernel 启动时会报：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    0.972082] i2c /dev entries driver&lt;br /&gt;
[    3.044909] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pcf8563@0x51:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# i2cdetect -y 0&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
常用命令：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@autoeco:~/f1c/linux$ date +%s -u&lt;br /&gt;
1758617972&lt;br /&gt;
&lt;br /&gt;
# date -s @1758617972&lt;br /&gt;
Tue Sep 23 08:59:32 UTC 2025&lt;br /&gt;
&lt;br /&gt;
# hwclock -r&lt;br /&gt;
[  369.265193] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.&lt;br /&gt;
hwclock: RTC_RD_TIME: Invalid argument&lt;br /&gt;
# hwclock -w&lt;br /&gt;
# hwclock -r&lt;br /&gt;
Tue Sep 23 08:59:59 2025  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LRADC ===&lt;br /&gt;
&lt;br /&gt;
* KEYADC_BaseAddr: 0x01C2 3400&lt;br /&gt;
* KEYADC_Ctrl_Reg: +0x00&lt;br /&gt;
* KEYADC_IntCtrl_Reg: +0x04&lt;br /&gt;
* KEYADC_IntStatus_Reg: +0x08&lt;br /&gt;
* KEYADC_Data_Reg: +0x0C&lt;br /&gt;
&lt;br /&gt;
* 6 位分辨率，检测电压范围 0~2V&lt;br /&gt;
* 最高 250Hz 采样率&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此 0 对应 0V，63 对应 2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取 4.2V 的电池电压，应采用 1% 的电阻分压，推荐 Vbat - 330K - 300K - GND，LRADC 测 300K 电阻的两端电压：&lt;br /&gt;
* 300/630 * 4.2 = 1.999&lt;br /&gt;
* 300/630 * 2.75 = 1.31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 电容触摸屏的支持 ===&lt;br /&gt;
&lt;br /&gt;
电容触摸屏的控制芯片为 GT911 使用 I2C 接口，我们要在 suniv-f1c100s-*.dts 文件中添加节点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/input/input.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/interrupt-controller/irq.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* 添加引用 */&lt;br /&gt;
&amp;amp;i2c0 {&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    gt911: touchscreen@14 {&lt;br /&gt;
        compatible = &amp;quot;goodix,gt911&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x14&amp;gt;;&lt;br /&gt;
        interrupt-parent = &amp;lt;&amp;amp;pio&amp;gt;;&lt;br /&gt;
        interrupts = &amp;lt;4 10 IRQ_TYPE_EDGE_FALLING&amp;gt;; /* (PE10) */&lt;br /&gt;
        pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
        pinctrl-0 = &amp;lt;&amp;amp;ts_reset_pin&amp;gt;;&lt;br /&gt;
        irq-gpios = &amp;lt;&amp;amp;pio 4 10 GPIO_ACTIVE_HIGH&amp;gt;; /* (PE10) */&lt;br /&gt;
        reset-gpios = &amp;lt;&amp;amp;pio 4 9 GPIO_ACTIVE_HIGH&amp;gt;; /* RST (PE9) */&lt;br /&gt;
        /* touchscreen-swapped-x-y */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;pio {&lt;br /&gt;
    ts_reset_pin: ts_reset_pin@0 {&lt;br /&gt;
        pins = &amp;quot;PE9&amp;quot;;&lt;br /&gt;
        function = &amp;quot;gpio_out&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若测试的触摸屏的 xy 方向颠倒，请添加或去掉 gt911 节点下的 touchscreen-swapped-x-y 属性。&lt;br /&gt;
&lt;br /&gt;
[https://item.taobao.com/item.htm?spm=a230r.1.14.87.57863beca0zG7h&amp;amp;id=589629409888&amp;amp;ns=1&amp;amp;abbucket=8#detail iTop 4412]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 长条屏 ===&lt;br /&gt;
&lt;br /&gt;
* 4.58 inch, 320x960, ST7701S, SPI+RGB, 40.37x117.9x2.08mm, Display 36.77x110.3mm, 40pin, 3.3V power supply&lt;br /&gt;
** 非 RGB 直驱，需通过 ST7701 转驱。得事先配置了 ST7701 才能够通过 RGB 口驱动。&lt;br /&gt;
** ST7701一上电需要10s-20s来启动，上电后最好延时20s再启动配置&lt;br /&gt;
** [https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628 LittleVGL ST7701][https://www.nxpic.org.cn/module/forum/thread-622198-1-1.html 捡屏幕第一弹—5寸480x854 ST7701屏]&lt;br /&gt;
&lt;br /&gt;
驱动实例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//ST7701S+AUO4.58&lt;br /&gt;
SPI_WriteComm (0xFF);     &lt;br /&gt;
SPI_WriteData (0x77); &lt;br /&gt;
SPI_WriteData (0x01);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x13);   &lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4.95 inch, 480x854, ST7701, SPI+RGB, 65x119x2.08mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI TFT 屏 ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.cnblogs.com/twzy/p/15160836.html SPI TFT屏幕修改与移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ESP8089 ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/notabucketofspam/ESP8089-SPI&lt;br /&gt;
* https://github.com/al177/esp8089&lt;br /&gt;
* https://whycan.com/t_5870.html&lt;br /&gt;
* https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
dts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;spi1 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    esp8089@0 {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        compatible = &amp;quot;boss,esp8089&amp;quot;;&lt;br /&gt;
        spi-cpol;&lt;br /&gt;
        spi-cpha;&lt;br /&gt;
        reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
        spi-max-frequency = &amp;lt;30000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        reset= &amp;lt;104&amp;gt;;&lt;br /&gt;
        interrupt= &amp;lt;103&amp;gt;;&lt;br /&gt;
        debug= &amp;lt;0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB OTG ===&lt;br /&gt;
&lt;br /&gt;
'''驱动'''通过读取 USB_ID 的电平，来判断是 host 模式还是 device 模式。&lt;br /&gt;
&lt;br /&gt;
micro-USB 口： pin1 - vcc，pin4 - usb_id, pin5 - gnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB_ID 检测脚，在 dts 配置为 PE2，默认 active high&lt;br /&gt;
* 当检测脚为高电平时，'''驱动 (driver)'''驱使硬件进入 device mode&lt;br /&gt;
* 当检测脚为低电平时，'''驱动 (driver)'''驱使硬件进入 host mode&lt;br /&gt;
* TeslaDR（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 10K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* nano 板（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 47K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* 当把 MicroUSB 的 usb_id 脚拉低时，即将 PE2 拉低，驱动驱使硬件进入 host mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USB Hub chip: gl850/gl850g&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device Mode (USB Gadget) ====&lt;br /&gt;
&lt;br /&gt;
F1C 作为 USB 设备，连接到主机。如果是 Linux 主机需要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo modprobe rndis_host&lt;br /&gt;
$ ifconfig usb0 192.168.3.1 up&lt;br /&gt;
&lt;br /&gt;
maybe:&lt;br /&gt;
$ sudo ifconfig enp0s20f0u3 192.168.3.1 up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作为客户端的 F1C 则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://blog.csdn.net/lan120576664/article/details/101081608&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的spi-flash系统编译创建全过程]&lt;br /&gt;
* [https://www.lotlab.org/2018/07/29/record-of-using-licheepi-part-2-using-linux-gadget/ 使用 Linux Gadget 复合设备共享网络与虚拟串口]&lt;br /&gt;
* [https://whycan.com/t_2889.html LicheePi Nano Usb复合设备RNDIS功能问题]&lt;br /&gt;
* [http://www.iipcb.com/blog/F1C100S_USB_DriverDebug1.html USB 裸机驱动]&lt;br /&gt;
&lt;br /&gt;
* https://irq5.io/2016/12/22/raspberry-pi-zero-as-multiple-usb-gadgets/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB 条码枪  ===&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_3963.html&lt;br /&gt;
* [https://whycan.com/t_6902.html 编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Serial ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_USB_SERIAL=y&lt;br /&gt;
CONFIG_USB_SERIAL_CH341=m&lt;br /&gt;
CONFIG_USB_SERIAL_CP210X=m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CH341 lsusb: 0x1a86:7523  (drivers/usb/serial/ch341.c)&lt;br /&gt;
* CP210x lsusb:  (drivers/usb/serial/cp210x.c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4G ===&lt;br /&gt;
&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
* [http://oldask.openluat.com/article/37 Air720模块Linux USB驱动以及PPP拨号说明]&lt;br /&gt;
* [http://oldask.openluat.com/article/79 Air720模块在linux设备上的RNDIS网卡使用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://wiki.jackslab.org/EMTC#AT Air724 AT 接口]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
入网不成功，可能导致枚举 usb 设备失败:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    7.780813] usb 1-1: new high-speed USB device number 2 using musb-hdrc&lt;br /&gt;
[    7.940764] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.210885] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.480803] usb 1-1: new high-speed USB device number 3 using musb-hdrc&lt;br /&gt;
[    8.630701] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.900700] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    9.020862] usb usb1-port1: attempt power cycle&lt;br /&gt;
[    9.510701] usb 1-1: new high-speed USB device number 4 using musb-hdrc&lt;br /&gt;
[    9.950713] usb 1-1: device not accepting address 4, error -71&lt;br /&gt;
[   10.100707] usb 1-1: new high-speed USB device number 5 using musb-hdrc&lt;br /&gt;
[   10.540723] usb 1-1: device not accepting address 5, error -71&lt;br /&gt;
[   10.546757] usb usb1-port1: unable to enumerate USB device&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
去除 sim 卡一样的错误 log，插入一个新卡一样，换 4G sim 卡一样的现象&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&lt;br /&gt;
ESP8266 接线：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
F1C200S			ESP8266Ex				ESP-12F&lt;br /&gt;
SPI_MOSI		SDIO_CMD(GPIO 11)		ESP_CS&lt;br /&gt;
SPI_MISO		SDIO_DATA_0(GPIO 7)		ESP_MISO&lt;br /&gt;
SPI_CLK			SDIO_CLK(GPIO 6)		ESP_CLK&lt;br /&gt;
WIFI_RESET(PD16/IO8)	CHOP_PU					ESP_EN(RST)&lt;br /&gt;
&lt;br /&gt;
SPI_CS			SDIO_DATA_3(GPIO 10)	ESP_GPIO10&lt;br /&gt;
WiFi_INT(PD18)	SDIO_DATA_1(GPIO 8)		ESP_MOSI&lt;br /&gt;
&lt;br /&gt;
精简 PIN，则：SDIO_DATA_3 (12F_GPIO10, SPI-CS) 拉低、SDIO_DATA_1 (12F_MOSI, WiFi_INT) 悬空&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot select:'''&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO15 (MTDO)&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO0&lt;br /&gt;
* GND &amp;lt;--- ESP8266_GPIO2&lt;br /&gt;
&lt;br /&gt;
ESP8266 Reset 后，通过判断如下管脚的状态来决定启动模式：  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MTDO 	GPIO0 	GPIO2 	Mode 	Description&lt;br /&gt;
L 	L 	H 	UART 	串口刷机&lt;br /&gt;
L 	H 	H 	Flash 	SPI Flash 正常启动&lt;br /&gt;
H 	x 	x 	SDIO 	SD-card 启动&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTDO 为 GPIO15&lt;br /&gt;
&lt;br /&gt;
启动时串口输出的 'boot mode:(x, y)' ， x 的低三位对应  {MTDO, GPIO0, GPIO2}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_2179.html  RTL8189 / rtl8723bs&lt;br /&gt;
* https://whycan.com/t_4149.html ESP8089 https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# ls -l /usr/lib/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3.19.13&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200.26.0&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200.26.0&lt;br /&gt;
# ls -l /usr/sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        296866 Jan  1  1970 wpa_cli&lt;br /&gt;
-rwx------    1 root     root        185953 Jan  1  1970 wpa_passphrase&lt;br /&gt;
-rwx------    1 root     root       9471254 Jan  1  1970 wpa_supplicant&lt;br /&gt;
# ls -l /sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwconfig&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwgetid&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwlist&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwpriv&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwspy&lt;br /&gt;
# ls -l /etc/ | grep 1970&lt;br /&gt;
-rw-------    1 root     root            96 Jan  1  1970 wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nginx:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep nginx&lt;br /&gt;
output/target/usr/sbin/nginx&lt;br /&gt;
output/target/etc/nginx&lt;br /&gt;
output/target/etc/nginx/win-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf&lt;br /&gt;
output/target/etc/nginx/mime.types&lt;br /&gt;
output/target/etc/nginx/koi-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi_params.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf.default&lt;br /&gt;
output/target/etc/nginx/fastcgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params&lt;br /&gt;
output/target/etc/nginx/uwsgi_params.default&lt;br /&gt;
output/target/etc/nginx/mime.types.default&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf&lt;br /&gt;
output/target/etc/nginx/uwsgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params.default&lt;br /&gt;
output/target/etc/nginx/koi-win&lt;br /&gt;
output/target/etc/init.d/S50nginx&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre&lt;br /&gt;
output/target/usr/lib/libpcre.a&lt;br /&gt;
output/target/usr/lib/libpcre.so&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcreposix.a&lt;br /&gt;
output/target/usr/lib/libpcreposix.so&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0.0.7&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcrecpp.a&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0.0.2&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/usr | grep html | grep -v pcre&lt;br /&gt;
output/target/usr/html/50x.html&lt;br /&gt;
output/target/usr/html/index.html&lt;br /&gt;
&lt;br /&gt;
$ scp -r output/target/usr/sbin/nginx root@192.168.1.204:/usr/sbin/&lt;br /&gt;
$ scp output/target/usr/lib/libpcre.so.1* root@192.168.1.204:/lib/&lt;br /&gt;
libpcre.so.1                                                                                               &lt;br /&gt;
libpcre.so.1.2.12 &lt;br /&gt;
$ scp -r output/target/etc/nginx root@192.168.1.204:/etc/&lt;br /&gt;
$ scp -r output/target/etc/init.d/S50nginx  root@192.168.1.204:/etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
CAN Gateway: https://whycan.com/t_6980.html&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/lushengchu_luis/article/details/77099239&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/a13698709128/article/details/104484467&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/weixin_59676688/article/details/124457092&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 摄像头 ==&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_5612.html 分享F1C100S的TVD源码，TVIN0接CVBS摄像头采集数据显示到LCD屏]&lt;br /&gt;
* [https://whycan.com/t_6902.html 站在微凉大侠的肩膀上，编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
* [https://whycan.com/t_2667.html 荔枝派zero 摄像头ov2640咸鱼使用（踩坑） 持续更新]&lt;br /&gt;
* [https://whycan.com/t_5327.html F1C200S使用OV2640拍照]&lt;br /&gt;
* [https://whycan.com/t_4056.html f1c100s的引脚怎么接csi摄像头]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install python-setuptools&lt;br /&gt;
$ git clone https://github.com/Lichee-Pi/u-boot.git&lt;br /&gt;
$ cd u-boot&lt;br /&gt;
# 切换到 Nano 分支&lt;br /&gt;
$ git checkout nano-v2018.01&lt;br /&gt;
&lt;br /&gt;
# 设定各项默认配置为 nano 的spiflash支持版，若不带spi-flash的板子，请换成 licheepi_nano_defconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sunxi-tools ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git&lt;br /&gt;
$ cd sunxi-tools&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果出现：fel_lib.c:26:20: fatal error: libusb.h: No such file or directory，那需要安装libusb：&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libusb-1.0-0-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
新到的一片 F1C 设备 Nor/Nand/SD 卡 都无系统，则自动进入 fel 模式，可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 查看芯片信息&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
# FEL 模式失败&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
ERROR: Allwinner USB FEL device not found!&lt;br /&gt;
&lt;br /&gt;
# 列出所有芯片的信息&lt;br /&gt;
$ sudo sunxi-fel -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时有两种方式进行程序下载：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 1.以 uboot file-with-spl形式进行（单次运行，测试时个人推荐）&lt;br /&gt;
$ sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin  # 请自行修改到本机地址&lt;br /&gt;
&lt;br /&gt;
# 2.烧进 spi-flash （开机自启）&lt;br /&gt;
$ sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin&lt;br /&gt;
# note: 重新烧录或重进fel模式时，请在上电时拉低SPI flash 的 CS引脚&lt;br /&gt;
&lt;br /&gt;
# 加载并执行 uboot 的 spl&lt;br /&gt;
$ sudo sunxi-fel spl [文件名]&lt;br /&gt;
&lt;br /&gt;
# 把文件内容写入内存指定地址(-p 是显示写入进度) &lt;br /&gt;
$ sudo sunxi-fel -p write [地址] [文件名]&lt;br /&gt;
&lt;br /&gt;
# 调用指定地址的函数&lt;br /&gt;
$ sudo sunxi-fel exec [地址]&lt;br /&gt;
&lt;br /&gt;
# 显示spiflash的信息&lt;br /&gt;
$ sudo sunxi-fel spiflash-info&lt;br /&gt;
&lt;br /&gt;
# 读取spiflash指定地址的数据并写入到文件&lt;br /&gt;
$ sudo sunxi-fel spiflash-read [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&lt;br /&gt;
# 写入指定文件的指定长度的内容到spiflash的指定地址&lt;br /&gt;
$ sudo sunxi-fel spiflash-write [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;如何进入 FEL mode：&amp;lt;/b&amp;gt; http://wiki.jackslab.org/F1C#FEL_mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
* http://nano.lichee.pro/build_sys/rootfs.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Buildroot ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget https://buildroot.org/downloads/buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ tar xvf buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ cd buildroot-2017.08/&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Buildroot Quick Start]]&lt;br /&gt;
&lt;br /&gt;
.config files: https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/buildroot.config&lt;br /&gt;
&lt;br /&gt;
快速添加一个 helloworld 包：http://www.chip-community.org/index.php/Startup_Program_with_Buildroot&lt;br /&gt;
&lt;br /&gt;
重 build 某个包：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-rebuild&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-dirclean&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-reinstall&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-source&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-show-depends&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-extract&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-staging&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-target&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-patch&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenWRT ====&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2573.html openwrt into spi-flash]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b licheepi-nano https://github.com/qinfengling/openwrt&lt;br /&gt;
cat &amp;gt; .config &amp;lt;&amp;lt; EOL&lt;br /&gt;
CONFIG_TARGET_sunxi=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9_DEVICE_suniv-f1c100s-licheepi-nano=y&lt;br /&gt;
CONFIG_DEVEL=y&lt;br /&gt;
CONFIG_BRCMFMAC_SDIO=y&lt;br /&gt;
CONFIG_BRCMFMAC_USB=y&lt;br /&gt;
CONFIG_DRIVER_11AC_SUPPORT=y&lt;br /&gt;
CONFIG_DRIVER_11N_SUPPORT=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_DEBUGFS=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_MESH=y&lt;br /&gt;
CONFIG_PACKAGE_brcmfmac-firmware-usb=y&lt;br /&gt;
CONFIG_PACKAGE_hostapd-common=y&lt;br /&gt;
CONFIG_PACKAGE_iw=y&lt;br /&gt;
CONFIG_PACKAGE_iwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-ahci-platform=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmfmac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmutil=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-cfg80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-libphy=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mac80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mmc=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-nls-base=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-of-mdio=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-rtc-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-scsi-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-sun4i-emac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-usb-core=y&lt;br /&gt;
CONFIG_PACKAGE_libiwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_swconfig=y&lt;br /&gt;
CONFIG_PACKAGE_wireless-regdb=y&lt;br /&gt;
CONFIG_PACKAGE_wpad-mini=y&lt;br /&gt;
CONFIG_SOFT_FLOAT=y&lt;br /&gt;
CONFIG_TARGET_OPTIONS=y&lt;br /&gt;
EOL&lt;br /&gt;
$ ./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;br /&gt;
$ make defconfig&lt;br /&gt;
$ make world&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/zhangheyang/openwrt&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* https://qinfengling.pro/build_openwrt_image_for_licheepi_nano.html&lt;br /&gt;
* [https://whycan.com/t_4279.html 尝试给f1c100s编译openwrt]&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的SPI-Flash系统编译创建全过程][https://whycan.com/t_2179.html 2]&lt;br /&gt;
* [[OpenWRT_Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig&lt;br /&gt;
&lt;br /&gt;
System configurration ---&amp;gt; [ ] Install timezone info&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/timezone&lt;br /&gt;
Etc/UTC&lt;br /&gt;
&lt;br /&gt;
$ ls -l /etc/localtime&lt;br /&gt;
/etc/localtime -&amp;gt; /usr/share/zoneinfo/Etc/UTC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deploy TF ===&lt;br /&gt;
&lt;br /&gt;
可以直接只用 TF 卡，分区时，前 3MB 留给 uboot 和 environments，第一个分区从 3MB 处开始&lt;br /&gt;
&lt;br /&gt;
'''给 U-Boot 的前 3MB:'''&lt;br /&gt;
&lt;br /&gt;
[[文件:F1c.tf.layout.png]]&lt;br /&gt;
&lt;br /&gt;
https://linux-sunxi.org/Bootable_SD_card&lt;br /&gt;
&lt;br /&gt;
需要将 uboot 写到 TF 卡 8KB 开始的位置&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''第一、二分区：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdX   # 进行分区操作&lt;br /&gt;
# 若已存分区即按 d 删除各个分区&lt;br /&gt;
# &lt;br /&gt;
# 通过 n 新建分区，第一分区16M，类型 c (W95 FAT32 LBA)，从 1MB 处 (start sector 2048) 开始，+16M；第二分区 +183M&lt;br /&gt;
# w 保存写入并退出&lt;br /&gt;
$ sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT&lt;br /&gt;
$ sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''第一分区：'''&lt;br /&gt;
* boot.scr    # u-boot 使用&lt;br /&gt;
* zImage&lt;br /&gt;
* suniv-f1c100s-licheepi-nano.dtb&lt;br /&gt;
&lt;br /&gt;
'''第二分区：'''&lt;br /&gt;
* 根文件系统内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''boot.scr 之生成：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat boot.cmd&lt;br /&gt;
setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw&lt;br /&gt;
load mmc 0:1 0x80C00000 suniv-f1c100s-ltegw.dtb&lt;br /&gt;
load mmc 0:1 0x80008000 zImage&lt;br /&gt;
bootz 0x80008000 - 0x80C00000&lt;br /&gt;
$ sudo apt install u-boot-tools&lt;br /&gt;
$ mkimage -C none -A arm -T script -d boot.cmd boot.scr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上电启动流程 ==&lt;br /&gt;
&lt;br /&gt;
After power-up, the F1C100s starts to fetch instructions from address '''0xFFFF_0000''' which is where the '''BROM''' is located at. It's an internal integrated 32 KB ROM Chip (Boot ROM or BROM).&lt;br /&gt;
&lt;br /&gt;
The BROM split up into two parts: The first part (at 0xFFFF_0000) is the '''FEL''' mode and the second is the '''eGON.BRM''' (located at 0xFFFF_4000).&lt;br /&gt;
&lt;br /&gt;
The reset vector is located at the very begining of FEL mode: at address 0xFFFF_0000. On reset, it jumps to 0xFFFF_0028 where it loads 0xFFFF_4000 (eGON.BRM) into the program counter to be executed next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== eGON Boot ===&lt;br /&gt;
&lt;br /&gt;
The eGON Boot ROM performs a few tasks:&lt;br /&gt;
&lt;br /&gt;
# do some [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L19 co-processor setup] ([http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbciiaf.html c15], (virtual) System Control Coprocessor).&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L23 disables] the WatchDog Timer&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L28 setups] CPU, AXI, AHB and APB0 clocks&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L34 enables] AHB Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L38 enables] APB0 Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L40 sets] the Stack Pointer to 32K&lt;br /&gt;
# then it [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L41 jumps] to [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L84 'boot'] which immediately [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L86 jumps to] [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot]&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot] setups up some registers, then [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2560 checks the status pin] (often called FEL pin, BSP pin or '''uboot''')&lt;br /&gt;
## if the pin is low (connected to GND) [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L90 executes] [[FEL]] mode at 0xFFFF_0020.&lt;br /&gt;
##  If the pin is high it continues trying to boot from the following media and on failure continues to the next in order.&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L91 SD Card0] also known as [[A10/CCM#CCM_MMC0_CLK|MMC0]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L98 Internal NAND flash] also known as [[A10/CCM#CCM_NAND_CLK|NAND]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L104 SD Card2] also known as [[A10/CCM#CCM_MMC2_CLK|MMC2]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L111 SPI connected NOR flash] also known as [[A10/CCM#CCM_SPI0_CLK|SPI]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s##L117 If all fails], '''FEL/USBBoot''' mode is [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L120 executed] from 0xFFFF_0020&lt;br /&gt;
&lt;br /&gt;
As can be seen, the SoC has several ways to boot and a lot would need to go wrong or 'fail' before entering FEL/USBBoot mode. This is especially important if there is a valid header in the NAND flash. Obviously this can be abused, by corrupting the header and thus forcing failure. If no other boot options are available, then FEL mode should be the final result. As a bypass mechanism, the A10 has the so called ''Boot Select Pin (BSP)''. This pin is normally internally pulled up by a 50KΩ resistor. If the pin is pulled low to GND, the A10 will try to boot into FEL/USBBoot mode. Otherwise the above boot-order will be tried.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
boot-&amp;gt; check fel key pressed (yes)--&amp;gt; FEL mode (boot from USB OTG)&lt;br /&gt;
                          \  &lt;br /&gt;
                      (no) \&lt;br /&gt;
                            \-------&amp;gt; 1) try to boot from SMHC0 (SD card)&lt;br /&gt;
                                      2) try to boot from SMHC2 (eMMC)&lt;br /&gt;
                                      3) try to boot from SPI0 (SPI NOR Flash)&lt;br /&gt;
                                      4) FEL mode (boot from USB OTG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  FEL mode ===&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F1C 无 Boot Select Pin 会依次尝试 MMC0 ---&amp;gt; NAND ---&amp;gt; MMC2 ---&amp;gt; NOR，如果启动都失败，就会进入 FEL mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方参考设计是将 PC2 短接到 GND 用了个按钮标记为 BOOT，PC2 所在的 SPI0 接的是 系统 eMMC，作为个 参考，PC2  =  SPI0_MISO = SDC1-D0，短接到 GND 即可使 eMMC 失效&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 短接 flash 的 1、4 两脚，重新上电，上电后松开短接，即可重新进入 fel 模式&lt;br /&gt;
* 在启动到内核前，回车进入 uboot，执行 sf probe 0;sf erase 0 0x100000;reset 即可重新进入 fel 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEL mode 下 PC 可用 sunxi-fei 工具通过 USB 口与 SoC 通信&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel uboot /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel -p spiflash-write 0 /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 下 erase flash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;gt; sf probe 0    # init flash device&lt;br /&gt;
&amp;gt; sf erase 0 0x100000    # erase 1MB flash&lt;br /&gt;
&amp;gt; reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
* http://linux-sunxi.org/FEL&lt;br /&gt;
* http://linux-sunxi.org/FEL/USBBoot&lt;br /&gt;
* http://linux-sunxi.org/BROM&lt;br /&gt;
* http://linux-sunxi.org/Sunxi-tools&lt;br /&gt;
* http://nano.lichee.pro/get_started/first_eat.html#id6&lt;br /&gt;
* [https://whycan.cn/t_717.html F1C100s入坑记录]&lt;br /&gt;
* [https://whycan.cn/t_3138.html 尝试从零构建F1C100s开发环境]&lt;br /&gt;
* https://whycan.com/t_2179.html spi-flash &amp;amp; wifi &amp;amp; usb-gad&lt;br /&gt;
* [https://whycan.com/t_6402.html &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot failed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# reboot&lt;br /&gt;
# Stopping network: OK&lt;br /&gt;
Saving random seed... done.&lt;br /&gt;
Stopping logging: OK&lt;br /&gt;
The system is going down NOW!&lt;br /&gt;
Sent SIGTERM to all processes&lt;br /&gt;
Sent SIGKILL to   20.550344 reboot: Restarting system&lt;br /&gt;
   21.549981 Reboot failed -- System halted&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原因：未使能看门狗。系统 Restart 时，是利用取消喂狗来触发看门狗超时，从而引发复位。&lt;br /&gt;
&lt;br /&gt;
修正： 内核配置时，选择 &lt;br /&gt;
&lt;br /&gt;
  Device Drivers → Watchdog Timer Support  → WatchDog Timer Driver Core 和 Allwinner SoCs watchdog support&lt;br /&gt;
&lt;br /&gt;
确保如下选项打开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_WATCHDOG=y&lt;br /&gt;
CONFIG_WATCHDOG_CORE=y&lt;br /&gt;
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y&lt;br /&gt;
CONFIG_SUNXI_WATCHDOG=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重新编译内核即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
* [http://linux-sunxi.org/images/b/ba/F1C100s_Datasheet_V1.0.pdf F1C100s Datasheet 2015]&lt;br /&gt;
* [http://dl.linux-sunxi.org/F1C100/Allwinner_F1C100_datasheet_20110331.pdf F1C100 Datasheet 2011]&lt;br /&gt;
* [https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf F1C600 User Manual]&lt;br /&gt;
* [http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf H3 Datasheet]&lt;br /&gt;
* [https://debugdump.com/files/20171005/13/Allwinner_V3s_Datasheet_V1.0.pdf V3S datasheet] [http://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf V3s datasheet]&lt;br /&gt;
&lt;br /&gt;
*  http://nano.lichee.pro&lt;br /&gt;
* http://tang.lichee.pro&lt;br /&gt;
&lt;br /&gt;
* [https://elinux.org/Device_Tree_Reference Device Tree]&lt;br /&gt;
* [http://nano.lichee.pro/build_sys/devicetree.html 设备树简介]&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_6402.html 自制基于F1C100s/F1C200s的M5Pi]&lt;br /&gt;
* [https://whycan.com/t_6388.html F1C100S开发了一个项目，原始技术实现，裸奔XUI GUI框架]&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2736.html 投屏软件scrcpy在Linux上的移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/F1C</id>
		<title>F1C</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/F1C"/>
				<updated>2026-03-10T03:40:18Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* sunxi-tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Core overview ==&lt;br /&gt;
&lt;br /&gt;
* F1C100s / F1C200s&lt;br /&gt;
** USB 2.0 OTG, UART x3, SPI x2, TWI x3, &lt;br /&gt;
&lt;br /&gt;
* V831 &amp;lt;---&lt;br /&gt;
** USB 2.0 OTG, UART x4, SPI x2, TWI x4, GPIO x4&lt;br /&gt;
&lt;br /&gt;
* V851S (64MB), V851SE (64MB, SiP EPHY, no display),  V851S3 (128MB)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x6&lt;br /&gt;
&lt;br /&gt;
* V853 / V853s (LFBGA, no SiP RAM)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F1C100s Overview ==&lt;br /&gt;
&lt;br /&gt;
* ARM926-EJS, up to 900MHz&lt;br /&gt;
* 32KB I-Cache, 16KB D-Cache, 5-stage pipeline&lt;br /&gt;
* 32MB SiP DDR1 (F1C200s is 64MB SiP DDR1)&lt;br /&gt;
&lt;br /&gt;
* RGB LCD interface&lt;br /&gt;
* USB 2.0 OTG&lt;br /&gt;
* SDIO&lt;br /&gt;
* SPI x2 (SPI_SCLK: 3KHz ~ 100MHz)&lt;br /&gt;
* TWI x3&lt;br /&gt;
* UART x3&lt;br /&gt;
* TV out x 1, TV in x 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PWM x2&lt;br /&gt;
* LRADC x1&lt;br /&gt;
* Speaker x2 + Mic x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-blockdiagram.jpg | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-typical-app.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C-roadmap.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-pinmap.jpg | 650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 荔枝派 Pin Map ===&lt;br /&gt;
&lt;br /&gt;
[[文件:Lichee-nano-pin-map.png]]&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** UART0_RX --- PE0&lt;br /&gt;
** UART0_TX --- PE1&lt;br /&gt;
** dtb 中默认系统启动的串口 serial0:115200n8&lt;br /&gt;
** UART1_RX --- PD3 --- D5&lt;br /&gt;
** UART1_TX --- PD4 --- D6&lt;br /&gt;
** UART2_RX --- PD14 --- D20&lt;br /&gt;
** UART2_TX --- PD13 --- D19&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SPI1&lt;br /&gt;
** PA0 - SPI1_CS&lt;br /&gt;
** PA1 - SPI1_MOSI&lt;br /&gt;
** PA2 - SPI1_SCK&lt;br /&gt;
** PA3 - SPI1_MISO&lt;br /&gt;
** PE3 -- Reset -- D0&lt;br /&gt;
** PE4 -- Interrupt -- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB&lt;br /&gt;
** 右上角，PCLK 右边为 USB_DM (D-)&lt;br /&gt;
** 右上角，PCLK 左边为 USB_DP (D+)&lt;br /&gt;
** USB_ID，拉低为主机模式，拉高为设备模式。Nano 开发板将 USB_ID 47K 上拉到 3V3，同时 USB_ID 和 PE2 相连。dts 设置使用 PE2 作为检测管脚（默认 active high，即：高电平）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进入系统后，可通过改变 PE2 的高低电平来控制 USB 的模式。比如默认 dtb 设置 PE2 为 active high，则进系统后，设置 PE2 为低电平，则 USB 会切换为主机模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I2C0&lt;br /&gt;
** PE11 --- SCL&lt;br /&gt;
** PE12 --- SDA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* GPIO&lt;br /&gt;
** PE3 --- D0&lt;br /&gt;
** PE4 --- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/Lichee_nano.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
* Power&lt;br /&gt;
** VCC-CORE: 1.0 - 1.2V&lt;br /&gt;
** VCC-DRAM: 2.3 - 2.7V&lt;br /&gt;
** AVCC: 2.5 - 3.1V&lt;br /&gt;
** VCC-IO: 3.0 - 3.6V&lt;br /&gt;
** VCC-HP: 3.0 - 3.5V&lt;br /&gt;
** VCC-TV: 3.0 - 3.5V&lt;br /&gt;
** VCC-USB: 3.0 - 3.5V&lt;br /&gt;
&lt;br /&gt;
* SIP DDR1&lt;br /&gt;
** SVREF (P33) &lt;br /&gt;
&lt;br /&gt;
* 音频&lt;br /&gt;
** HPL, HPR 左右声道；HPCOM, HPCOMFP 接耳机插座&lt;br /&gt;
** LINEIN：可用于连接电吉他、电子琴、合成器等外界设备的音频信号，由于这些设备本身输出功率就比较大，因此需要连接到 Line in 端口录音，当然使用它们录音从某种程度上也可以被称为外部设备的“内录”。一般您使用的声卡越好，Line in里的噪音就会越低，录制效果也会比较好。&lt;br /&gt;
** MICIN：用于连接麦克风，和 Line in 的区别在于它有前置放大器，麦克风本身输出功率小，因此必须要有一个放大设备来放大音频信号&lt;br /&gt;
** VRA1, VRA2, FMINL, FMINR&lt;br /&gt;
&lt;br /&gt;
* TV&lt;br /&gt;
** TV_OUT&lt;br /&gt;
** TV_VRN, TV_VRP, TVIN1, TVIN0&lt;br /&gt;
&lt;br /&gt;
* KEY INPUT&lt;br /&gt;
** LRADC0: 6bit resolution; 0 - 2V, 250Hz; 3.0/2^6 = 0.047&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PE11 CLK Out ==&lt;br /&gt;
&lt;br /&gt;
PE11 管脚可以输出 clkout，给 CIF 摄像头的提供时钟源，节约成本&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;clk-mux@0x01c000f0&amp;quot;: {&lt;br /&gt;
		&amp;quot;parent&amp;quot;: [&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;losc&amp;quot;, &amp;quot;value&amp;quot;: 0 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;osc32k&amp;quot;, &amp;quot;value&amp;quot;: 1 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;hosc&amp;quot;, &amp;quot;value&amp;quot;: 2 }&lt;br /&gt;
		],&lt;br /&gt;
		&amp;quot;name&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 24, &amp;quot;width&amp;quot;: 2,&lt;br /&gt;
		&amp;quot;default&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;hosc&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;clk-ratio@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 20, &amp;quot;width&amp;quot;: 2, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-divider@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 8, &amp;quot;width&amp;quot;: 5, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-gate@0x01c000f0&amp;quot;: {&amp;quot;parent&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 31, &amp;quot;invert&amp;quot;: false, &amp;quot;default&amp;quot;: { &amp;quot;enable&amp;quot;: false } },&lt;br /&gt;
	&amp;quot;clk-link&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;link-clkout&amp;quot; },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可输出24MHZ，12MHZ，6MHZ。。。&lt;br /&gt;
&lt;br /&gt;
参考 patch: https://gitee.com/xboot/xboot/commit/245601d534de73748a37f05531ff7a11bdc0545c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
调试消息控制台设置：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
0 = KERN_EMERG      /* 系统即将崩溃 */&lt;br /&gt;
1 = KERN_ALERT      /* 需要立即关注 */&lt;br /&gt;
2 = KERN_CRIT       /* 紧急情况 */&lt;br /&gt;
3 = KERN_ERR        /* 错误消息 */&lt;br /&gt;
4 = KERN_WARNING    /* 警告消息 */&lt;br /&gt;
5 = KERN_NOTICE     /* 正常但需要注意 */&lt;br /&gt;
6 = KERN_INFO       /* 信息性消息 */&lt;br /&gt;
7 = KERN_DEBUG      /* 调试消息 */&lt;br /&gt;
&lt;br /&gt;
# 设置控制台级别&lt;br /&gt;
echo 6 &amp;gt; /proc/sys/kernel/printk        # 只显示 0-6 级别的消息&lt;br /&gt;
echo 8 &amp;gt; /proc/sys/kernel/printk        # 显示更多调试信息&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/printk        # 只显示紧急消息&lt;br /&gt;
&lt;br /&gt;
dmesg -n 8  # 效果同 echo 8 &amp;gt; /proc/sys/kernel/printk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone https://github.com/Icenowy/linux.git&lt;br /&gt;
&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
# 添加下面两行&lt;br /&gt;
192.30.253.112  github.com&lt;br /&gt;
151.101.73.194 github.global.ssl.fastly.net&lt;br /&gt;
&lt;br /&gt;
# 可自行通过dns检测网站检测github.global.ssl.fastly.net，更换为更快的ip地址&lt;br /&gt;
# 完整拉取linux极大，建议只拉取单层分支，减少等待时间：&lt;br /&gt;
$ git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.config: http://dl.sipeed.com/LICHEE/Nano/SDK/config    http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm menuconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8    #请自行修改编译线程数&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
arch/arm/boot/dts/suniv.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s-tesladr.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''arch/arm/boot/dts/Makefile:'''&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
dtb-$(CONFIG_MACH_SUNIV) += \&lt;br /&gt;
    suniv-f1c100s-ltegw.dtb \&lt;br /&gt;
    suniv-f1c100s-tesladr.dtb&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
查看 DTS 中对应的设备用了哪些关键字：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ grep -r of_property drivers/spi/ | grep spi-max-frequency&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SPI:'''&lt;br /&gt;
&lt;br /&gt;
SPI_SCLK: 3KHz ~ 100MHz&lt;br /&gt;
* SPI Nor Flash: spi-max-frequency = &amp;lt;50000000&amp;gt;; (50MHz)&lt;br /&gt;
* SPI 127x: spi-max-frequency = &amp;lt;10000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# CONFIG_SPI_SUN4I is not set&lt;br /&gt;
CONFIG_SPI_SUN6I=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
drivers/spi/spi-bitbang.o&lt;br /&gt;
drivers/spi/spidev.o&lt;br /&gt;
drivers/spi/spi-gpio.o&lt;br /&gt;
drivers/spi/spi.o&lt;br /&gt;
drivers/spi/spi-sun6i.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 leds {&lt;br /&gt;
             compatible = &amp;quot;gpio-leds&amp;quot;;&lt;br /&gt;
             blue_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:blue:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 4 GPIO_ACTIVE_LOW&amp;gt;; /* PE4 */&lt;br /&gt;
             };&lt;br /&gt;
             green_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:green:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 5 GPIO_ACTIVE_LOW&amp;gt;; /* PE5 */&lt;br /&gt;
                     default-state = &amp;quot;on&amp;quot;;&lt;br /&gt;
             };&lt;br /&gt;
             red_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:red:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 5 6 GPIO_ACTIVE_LOW&amp;gt;; /* PE6 */&lt;br /&gt;
             };&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
命令行方式：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat gpio.sh&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
if [ ! -e /sys/class/gpio/gpio$1 ]; then&lt;br /&gt;
    echo $1 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio$1/direction&lt;br /&gt;
echo $2 &amp;gt; /sys/class/gpio/gpio$1/value&lt;br /&gt;
&lt;br /&gt;
$ ./gpio.sh 105 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# A: 0&lt;br /&gt;
# B: 1&lt;br /&gt;
# C: 2&lt;br /&gt;
# D: 3&lt;br /&gt;
# E: 4&lt;br /&gt;
 * PB5 = 32*1 + 5 = 37&lt;br /&gt;
 * PC6= 32*2 + 6 = 70&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * PB5 = 32*1 + 5&lt;br /&gt;
 * PC6= 32*2 + 6&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
*/&lt;br /&gt;
gpio_direction_output(105, 0);     // 设置 PD9 为输出状态, 默认输出低电平&lt;br /&gt;
gpio_set_value(105, 1);                // 高电平&lt;br /&gt;
gpio_set_value(105, 0);                // 低电平&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
* pcf8563: 0x51&lt;br /&gt;
* sht3x: 0x44 / 0x45&lt;br /&gt;
* sht2x: 0x40&lt;br /&gt;
* sts3x: 0x4A / 0x4B&lt;br /&gt;
* pc10: 0x28&lt;br /&gt;
* pc10nsa: 0x6D&lt;br /&gt;
* pcz1: 0x28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TeslaDR:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        /* 在 pio 节点下，添加 i2c 引脚定义 */&lt;br /&gt;
        i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PE11&amp;quot;, &amp;quot;PE12&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M6:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
            i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PD12&amp;quot;, &amp;quot;PD0&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
            };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        i2c0: i2c@1C27000 {&lt;br /&gt;
            compatible = &amp;quot;allwinner,sun6i-a31-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x01C27000 0x400&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;7&amp;gt;;&lt;br /&gt;
            clocks = &amp;lt;&amp;amp;ccu CLK_BUS_I2C0&amp;gt;;&lt;br /&gt;
            resets = &amp;lt;&amp;amp;ccu RST_BUS_I2C0&amp;gt;;&lt;br /&gt;
            pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
            pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
            #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
            #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCL 和 SDA 必须 10K / 1K 拉高，否则 kernel 启动时会报：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    0.972082] i2c /dev entries driver&lt;br /&gt;
[    3.044909] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pcf8563@0x51:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# i2cdetect -y 0&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
常用命令：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@autoeco:~/f1c/linux$ date +%s -u&lt;br /&gt;
1758617972&lt;br /&gt;
&lt;br /&gt;
# date -s @1758617972&lt;br /&gt;
Tue Sep 23 08:59:32 UTC 2025&lt;br /&gt;
&lt;br /&gt;
# hwclock -r&lt;br /&gt;
[  369.265193] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.&lt;br /&gt;
hwclock: RTC_RD_TIME: Invalid argument&lt;br /&gt;
# hwclock -w&lt;br /&gt;
# hwclock -r&lt;br /&gt;
Tue Sep 23 08:59:59 2025  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LRADC ===&lt;br /&gt;
&lt;br /&gt;
* KEYADC_BaseAddr: 0x01C2 3400&lt;br /&gt;
* KEYADC_Ctrl_Reg: +0x00&lt;br /&gt;
* KEYADC_IntCtrl_Reg: +0x04&lt;br /&gt;
* KEYADC_IntStatus_Reg: +0x08&lt;br /&gt;
* KEYADC_Data_Reg: +0x0C&lt;br /&gt;
&lt;br /&gt;
* 6 位分辨率，检测电压范围 0~2V&lt;br /&gt;
* 最高 250Hz 采样率&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此 0 对应 0V，63 对应 2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取 4.2V 的电池电压，应采用 1% 的电阻分压，推荐 Vbat - 330K - 300K - GND，LRADC 测 300K 电阻的两端电压：&lt;br /&gt;
* 300/630 * 4.2 = 1.999&lt;br /&gt;
* 300/630 * 2.75 = 1.31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 电容触摸屏的支持 ===&lt;br /&gt;
&lt;br /&gt;
电容触摸屏的控制芯片为 GT911 使用 I2C 接口，我们要在 suniv-f1c100s-*.dts 文件中添加节点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/input/input.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/interrupt-controller/irq.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* 添加引用 */&lt;br /&gt;
&amp;amp;i2c0 {&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    gt911: touchscreen@14 {&lt;br /&gt;
        compatible = &amp;quot;goodix,gt911&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x14&amp;gt;;&lt;br /&gt;
        interrupt-parent = &amp;lt;&amp;amp;pio&amp;gt;;&lt;br /&gt;
        interrupts = &amp;lt;4 10 IRQ_TYPE_EDGE_FALLING&amp;gt;; /* (PE10) */&lt;br /&gt;
        pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
        pinctrl-0 = &amp;lt;&amp;amp;ts_reset_pin&amp;gt;;&lt;br /&gt;
        irq-gpios = &amp;lt;&amp;amp;pio 4 10 GPIO_ACTIVE_HIGH&amp;gt;; /* (PE10) */&lt;br /&gt;
        reset-gpios = &amp;lt;&amp;amp;pio 4 9 GPIO_ACTIVE_HIGH&amp;gt;; /* RST (PE9) */&lt;br /&gt;
        /* touchscreen-swapped-x-y */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;pio {&lt;br /&gt;
    ts_reset_pin: ts_reset_pin@0 {&lt;br /&gt;
        pins = &amp;quot;PE9&amp;quot;;&lt;br /&gt;
        function = &amp;quot;gpio_out&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若测试的触摸屏的 xy 方向颠倒，请添加或去掉 gt911 节点下的 touchscreen-swapped-x-y 属性。&lt;br /&gt;
&lt;br /&gt;
[https://item.taobao.com/item.htm?spm=a230r.1.14.87.57863beca0zG7h&amp;amp;id=589629409888&amp;amp;ns=1&amp;amp;abbucket=8#detail iTop 4412]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 长条屏 ===&lt;br /&gt;
&lt;br /&gt;
* 4.58 inch, 320x960, ST7701S, SPI+RGB, 40.37x117.9x2.08mm, Display 36.77x110.3mm, 40pin, 3.3V power supply&lt;br /&gt;
** 非 RGB 直驱，需通过 ST7701 转驱。得事先配置了 ST7701 才能够通过 RGB 口驱动。&lt;br /&gt;
** ST7701一上电需要10s-20s来启动，上电后最好延时20s再启动配置&lt;br /&gt;
** [https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628 LittleVGL ST7701][https://www.nxpic.org.cn/module/forum/thread-622198-1-1.html 捡屏幕第一弹—5寸480x854 ST7701屏]&lt;br /&gt;
&lt;br /&gt;
驱动实例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//ST7701S+AUO4.58&lt;br /&gt;
SPI_WriteComm (0xFF);     &lt;br /&gt;
SPI_WriteData (0x77); &lt;br /&gt;
SPI_WriteData (0x01);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x13);   &lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4.95 inch, 480x854, ST7701, SPI+RGB, 65x119x2.08mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI TFT 屏 ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.cnblogs.com/twzy/p/15160836.html SPI TFT屏幕修改与移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ESP8089 ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/notabucketofspam/ESP8089-SPI&lt;br /&gt;
* https://github.com/al177/esp8089&lt;br /&gt;
* https://whycan.com/t_5870.html&lt;br /&gt;
* https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
dts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;spi1 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    esp8089@0 {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        compatible = &amp;quot;boss,esp8089&amp;quot;;&lt;br /&gt;
        spi-cpol;&lt;br /&gt;
        spi-cpha;&lt;br /&gt;
        reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
        spi-max-frequency = &amp;lt;30000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        reset= &amp;lt;104&amp;gt;;&lt;br /&gt;
        interrupt= &amp;lt;103&amp;gt;;&lt;br /&gt;
        debug= &amp;lt;0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB OTG ===&lt;br /&gt;
&lt;br /&gt;
'''驱动'''通过读取 USB_ID 的电平，来判断是 host 模式还是 device 模式。&lt;br /&gt;
&lt;br /&gt;
micro-USB 口： pin1 - vcc，pin4 - usb_id, pin5 - gnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB_ID 检测脚，在 dts 配置为 PE2，默认 active high&lt;br /&gt;
* 当检测脚为高电平时，'''驱动 (driver)'''驱使硬件进入 device mode&lt;br /&gt;
* 当检测脚为低电平时，'''驱动 (driver)'''驱使硬件进入 host mode&lt;br /&gt;
* TeslaDR（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 10K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* nano 板（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 47K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* 当把 MicroUSB 的 usb_id 脚拉低时，即将 PE2 拉低，驱动驱使硬件进入 host mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USB Hub chip: gl850/gl850g&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device Mode (USB Gadget) ====&lt;br /&gt;
&lt;br /&gt;
F1C 作为 USB 设备，连接到主机。如果是 Linux 主机需要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo modprobe rndis_host&lt;br /&gt;
$ ifconfig usb0 192.168.3.1 up&lt;br /&gt;
&lt;br /&gt;
maybe:&lt;br /&gt;
$ sudo ifconfig enp0s20f0u3 192.168.3.1 up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作为客户端的 F1C 则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://blog.csdn.net/lan120576664/article/details/101081608&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的spi-flash系统编译创建全过程]&lt;br /&gt;
* [https://www.lotlab.org/2018/07/29/record-of-using-licheepi-part-2-using-linux-gadget/ 使用 Linux Gadget 复合设备共享网络与虚拟串口]&lt;br /&gt;
* [https://whycan.com/t_2889.html LicheePi Nano Usb复合设备RNDIS功能问题]&lt;br /&gt;
* [http://www.iipcb.com/blog/F1C100S_USB_DriverDebug1.html USB 裸机驱动]&lt;br /&gt;
&lt;br /&gt;
* https://irq5.io/2016/12/22/raspberry-pi-zero-as-multiple-usb-gadgets/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB 条码枪  ===&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_3963.html&lt;br /&gt;
* [https://whycan.com/t_6902.html 编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Serial ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_USB_SERIAL=y&lt;br /&gt;
CONFIG_USB_SERIAL_CH341=m&lt;br /&gt;
CONFIG_USB_SERIAL_CP210X=m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CH341 lsusb: 0x1a86:7523  (drivers/usb/serial/ch341.c)&lt;br /&gt;
* CP210x lsusb:  (drivers/usb/serial/cp210x.c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4G ===&lt;br /&gt;
&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
* [http://oldask.openluat.com/article/37 Air720模块Linux USB驱动以及PPP拨号说明]&lt;br /&gt;
* [http://oldask.openluat.com/article/79 Air720模块在linux设备上的RNDIS网卡使用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://wiki.jackslab.org/EMTC#AT Air724 AT 接口]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
入网不成功，可能导致枚举 usb 设备失败:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    7.780813] usb 1-1: new high-speed USB device number 2 using musb-hdrc&lt;br /&gt;
[    7.940764] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.210885] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.480803] usb 1-1: new high-speed USB device number 3 using musb-hdrc&lt;br /&gt;
[    8.630701] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.900700] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    9.020862] usb usb1-port1: attempt power cycle&lt;br /&gt;
[    9.510701] usb 1-1: new high-speed USB device number 4 using musb-hdrc&lt;br /&gt;
[    9.950713] usb 1-1: device not accepting address 4, error -71&lt;br /&gt;
[   10.100707] usb 1-1: new high-speed USB device number 5 using musb-hdrc&lt;br /&gt;
[   10.540723] usb 1-1: device not accepting address 5, error -71&lt;br /&gt;
[   10.546757] usb usb1-port1: unable to enumerate USB device&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
去除 sim 卡一样的错误 log，插入一个新卡一样，换 4G sim 卡一样的现象&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&lt;br /&gt;
ESP8266 接线：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
F1C200S			ESP8266Ex				ESP-12F&lt;br /&gt;
SPI_MOSI		SDIO_CMD(GPIO 11)		ESP_CS&lt;br /&gt;
SPI_MISO		SDIO_DATA_0(GPIO 7)		ESP_MISO&lt;br /&gt;
SPI_CLK			SDIO_CLK(GPIO 6)		ESP_CLK&lt;br /&gt;
WIFI_RESET(PD16/IO8)	CHOP_PU					ESP_EN(RST)&lt;br /&gt;
&lt;br /&gt;
SPI_CS			SDIO_DATA_3(GPIO 10)	ESP_GPIO10&lt;br /&gt;
WiFi_INT(PD18)	SDIO_DATA_1(GPIO 8)		ESP_MOSI&lt;br /&gt;
&lt;br /&gt;
精简 PIN，则：SDIO_DATA_3 (12F_GPIO10, SPI-CS) 拉低、SDIO_DATA_1 (12F_MOSI, WiFi_INT) 悬空&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot select:'''&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO15 (MTDO)&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO0&lt;br /&gt;
* GND &amp;lt;--- ESP8266_GPIO2&lt;br /&gt;
&lt;br /&gt;
ESP8266 Reset 后，通过判断如下管脚的状态来决定启动模式：  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MTDO 	GPIO0 	GPIO2 	Mode 	Description&lt;br /&gt;
L 	L 	H 	UART 	串口刷机&lt;br /&gt;
L 	H 	H 	Flash 	SPI Flash 正常启动&lt;br /&gt;
H 	x 	x 	SDIO 	SD-card 启动&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTDO 为 GPIO15&lt;br /&gt;
&lt;br /&gt;
启动时串口输出的 'boot mode:(x, y)' ， x 的低三位对应  {MTDO, GPIO0, GPIO2}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_2179.html  RTL8189 / rtl8723bs&lt;br /&gt;
* https://whycan.com/t_4149.html ESP8089 https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# ls -l /usr/lib/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3.19.13&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200.26.0&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200.26.0&lt;br /&gt;
# ls -l /usr/sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        296866 Jan  1  1970 wpa_cli&lt;br /&gt;
-rwx------    1 root     root        185953 Jan  1  1970 wpa_passphrase&lt;br /&gt;
-rwx------    1 root     root       9471254 Jan  1  1970 wpa_supplicant&lt;br /&gt;
# ls -l /sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwconfig&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwgetid&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwlist&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwpriv&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwspy&lt;br /&gt;
# ls -l /etc/ | grep 1970&lt;br /&gt;
-rw-------    1 root     root            96 Jan  1  1970 wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nginx:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep nginx&lt;br /&gt;
output/target/usr/sbin/nginx&lt;br /&gt;
output/target/etc/nginx&lt;br /&gt;
output/target/etc/nginx/win-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf&lt;br /&gt;
output/target/etc/nginx/mime.types&lt;br /&gt;
output/target/etc/nginx/koi-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi_params.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf.default&lt;br /&gt;
output/target/etc/nginx/fastcgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params&lt;br /&gt;
output/target/etc/nginx/uwsgi_params.default&lt;br /&gt;
output/target/etc/nginx/mime.types.default&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf&lt;br /&gt;
output/target/etc/nginx/uwsgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params.default&lt;br /&gt;
output/target/etc/nginx/koi-win&lt;br /&gt;
output/target/etc/init.d/S50nginx&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre&lt;br /&gt;
output/target/usr/lib/libpcre.a&lt;br /&gt;
output/target/usr/lib/libpcre.so&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcreposix.a&lt;br /&gt;
output/target/usr/lib/libpcreposix.so&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0.0.7&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcrecpp.a&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0.0.2&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/usr | grep html | grep -v pcre&lt;br /&gt;
output/target/usr/html/50x.html&lt;br /&gt;
output/target/usr/html/index.html&lt;br /&gt;
&lt;br /&gt;
$ scp -r output/target/usr/sbin/nginx root@192.168.1.204:/usr/sbin/&lt;br /&gt;
$ scp output/target/usr/lib/libpcre.so.1* root@192.168.1.204:/lib/&lt;br /&gt;
libpcre.so.1                                                                                               &lt;br /&gt;
libpcre.so.1.2.12 &lt;br /&gt;
$ scp -r output/target/etc/nginx root@192.168.1.204:/etc/&lt;br /&gt;
$ scp -r output/target/etc/init.d/S50nginx  root@192.168.1.204:/etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
CAN Gateway: https://whycan.com/t_6980.html&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/lushengchu_luis/article/details/77099239&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/a13698709128/article/details/104484467&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/weixin_59676688/article/details/124457092&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 摄像头 ==&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_5612.html 分享F1C100S的TVD源码，TVIN0接CVBS摄像头采集数据显示到LCD屏]&lt;br /&gt;
* [https://whycan.com/t_6902.html 站在微凉大侠的肩膀上，编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
* [https://whycan.com/t_2667.html 荔枝派zero 摄像头ov2640咸鱼使用（踩坑） 持续更新]&lt;br /&gt;
* [https://whycan.com/t_5327.html F1C200S使用OV2640拍照]&lt;br /&gt;
* [https://whycan.com/t_4056.html f1c100s的引脚怎么接csi摄像头]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install python-setuptools&lt;br /&gt;
$ git clone https://github.com/Lichee-Pi/u-boot.git&lt;br /&gt;
$ cd u-boot&lt;br /&gt;
# 切换到 Nano 分支&lt;br /&gt;
$ git checkout nano-v2018.01&lt;br /&gt;
&lt;br /&gt;
# 设定各项默认配置为 nano 的spiflash支持版，若不带spi-flash的板子，请换成 licheepi_nano_defconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sunxi-tools ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git&lt;br /&gt;
$ cd sunxi-tools&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果出现：fel_lib.c:26:20: fatal error: libusb.h: No such file or directory，那需要安装libusb：&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libusb-1.0-0-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
新到的一片 F1C 设备 Nor/Nand/SD 卡 都无系统，则自动进入 fel 模式，可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 查看芯片信息&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
# FEL 模式失败&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
ERROR: Allwinner USB FEL device not found!&lt;br /&gt;
&lt;br /&gt;
# 列出所有芯片的信息&lt;br /&gt;
$ sudo sunxi-fel -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时有两种方式进行程序下载：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 1.以 uboot file-with-spl形式进行（单次运行，测试时个人推荐）&lt;br /&gt;
$ sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin  # 请自行修改到本机地址&lt;br /&gt;
&lt;br /&gt;
# 2.烧进 spi-flash （开机自启）&lt;br /&gt;
$ sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin&lt;br /&gt;
# note: 重新烧录或重进fel模式时，请在上电时拉低SPI flash 的 CS引脚&lt;br /&gt;
&lt;br /&gt;
# 加载并执行 uboot 的 spl&lt;br /&gt;
$ sudo sunxi-fel spl [文件名]&lt;br /&gt;
&lt;br /&gt;
# 把文件内容写入内存指定地址(-p 是显示写入进度) &lt;br /&gt;
$ sudo sunxi-fel -p write [地址] [文件名]&lt;br /&gt;
&lt;br /&gt;
# 调用指定地址的函数&lt;br /&gt;
$ sudo sunxi-fel exec [地址]&lt;br /&gt;
&lt;br /&gt;
# 显示spiflash的信息&lt;br /&gt;
$ sudo sunxi-fel spiflash-info&lt;br /&gt;
&lt;br /&gt;
# 读取spiflash指定地址的数据并写入到文件&lt;br /&gt;
$ sudo sunxi-fel spiflash-read [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&lt;br /&gt;
# 写入指定文件的指定长度的内容到spiflash的指定地址&lt;br /&gt;
$ sudo sunxi-fel spiflash-write [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;如何进入 FEL mode：&amp;lt;/b&amp;gt;&lt;br /&gt;
* 如用 SPI0 flash，则上电前短接 spi0 的 CS &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
* http://nano.lichee.pro/build_sys/rootfs.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Buildroot ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget https://buildroot.org/downloads/buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ tar xvf buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ cd buildroot-2017.08/&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Buildroot Quick Start]]&lt;br /&gt;
&lt;br /&gt;
.config files: https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/buildroot.config&lt;br /&gt;
&lt;br /&gt;
快速添加一个 helloworld 包：http://www.chip-community.org/index.php/Startup_Program_with_Buildroot&lt;br /&gt;
&lt;br /&gt;
重 build 某个包：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-rebuild&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-dirclean&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-reinstall&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-source&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-show-depends&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-extract&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-staging&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-target&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-patch&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenWRT ====&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2573.html openwrt into spi-flash]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b licheepi-nano https://github.com/qinfengling/openwrt&lt;br /&gt;
cat &amp;gt; .config &amp;lt;&amp;lt; EOL&lt;br /&gt;
CONFIG_TARGET_sunxi=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9_DEVICE_suniv-f1c100s-licheepi-nano=y&lt;br /&gt;
CONFIG_DEVEL=y&lt;br /&gt;
CONFIG_BRCMFMAC_SDIO=y&lt;br /&gt;
CONFIG_BRCMFMAC_USB=y&lt;br /&gt;
CONFIG_DRIVER_11AC_SUPPORT=y&lt;br /&gt;
CONFIG_DRIVER_11N_SUPPORT=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_DEBUGFS=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_MESH=y&lt;br /&gt;
CONFIG_PACKAGE_brcmfmac-firmware-usb=y&lt;br /&gt;
CONFIG_PACKAGE_hostapd-common=y&lt;br /&gt;
CONFIG_PACKAGE_iw=y&lt;br /&gt;
CONFIG_PACKAGE_iwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-ahci-platform=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmfmac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmutil=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-cfg80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-libphy=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mac80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mmc=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-nls-base=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-of-mdio=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-rtc-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-scsi-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-sun4i-emac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-usb-core=y&lt;br /&gt;
CONFIG_PACKAGE_libiwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_swconfig=y&lt;br /&gt;
CONFIG_PACKAGE_wireless-regdb=y&lt;br /&gt;
CONFIG_PACKAGE_wpad-mini=y&lt;br /&gt;
CONFIG_SOFT_FLOAT=y&lt;br /&gt;
CONFIG_TARGET_OPTIONS=y&lt;br /&gt;
EOL&lt;br /&gt;
$ ./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;br /&gt;
$ make defconfig&lt;br /&gt;
$ make world&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/zhangheyang/openwrt&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* https://qinfengling.pro/build_openwrt_image_for_licheepi_nano.html&lt;br /&gt;
* [https://whycan.com/t_4279.html 尝试给f1c100s编译openwrt]&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的SPI-Flash系统编译创建全过程][https://whycan.com/t_2179.html 2]&lt;br /&gt;
* [[OpenWRT_Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig&lt;br /&gt;
&lt;br /&gt;
System configurration ---&amp;gt; [ ] Install timezone info&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/timezone&lt;br /&gt;
Etc/UTC&lt;br /&gt;
&lt;br /&gt;
$ ls -l /etc/localtime&lt;br /&gt;
/etc/localtime -&amp;gt; /usr/share/zoneinfo/Etc/UTC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deploy TF ===&lt;br /&gt;
&lt;br /&gt;
可以直接只用 TF 卡，分区时，前 3MB 留给 uboot 和 environments，第一个分区从 3MB 处开始&lt;br /&gt;
&lt;br /&gt;
'''给 U-Boot 的前 3MB:'''&lt;br /&gt;
&lt;br /&gt;
[[文件:F1c.tf.layout.png]]&lt;br /&gt;
&lt;br /&gt;
https://linux-sunxi.org/Bootable_SD_card&lt;br /&gt;
&lt;br /&gt;
需要将 uboot 写到 TF 卡 8KB 开始的位置&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''第一、二分区：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdX   # 进行分区操作&lt;br /&gt;
# 若已存分区即按 d 删除各个分区&lt;br /&gt;
# &lt;br /&gt;
# 通过 n 新建分区，第一分区16M，类型 c (W95 FAT32 LBA)，从 1MB 处 (start sector 2048) 开始，+16M；第二分区 +183M&lt;br /&gt;
# w 保存写入并退出&lt;br /&gt;
$ sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT&lt;br /&gt;
$ sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''第一分区：'''&lt;br /&gt;
* boot.scr    # u-boot 使用&lt;br /&gt;
* zImage&lt;br /&gt;
* suniv-f1c100s-licheepi-nano.dtb&lt;br /&gt;
&lt;br /&gt;
'''第二分区：'''&lt;br /&gt;
* 根文件系统内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''boot.scr 之生成：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat boot.cmd&lt;br /&gt;
setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw&lt;br /&gt;
load mmc 0:1 0x80C00000 suniv-f1c100s-ltegw.dtb&lt;br /&gt;
load mmc 0:1 0x80008000 zImage&lt;br /&gt;
bootz 0x80008000 - 0x80C00000&lt;br /&gt;
$ sudo apt install u-boot-tools&lt;br /&gt;
$ mkimage -C none -A arm -T script -d boot.cmd boot.scr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上电启动流程 ==&lt;br /&gt;
&lt;br /&gt;
After power-up, the F1C100s starts to fetch instructions from address '''0xFFFF_0000''' which is where the '''BROM''' is located at. It's an internal integrated 32 KB ROM Chip (Boot ROM or BROM).&lt;br /&gt;
&lt;br /&gt;
The BROM split up into two parts: The first part (at 0xFFFF_0000) is the '''FEL''' mode and the second is the '''eGON.BRM''' (located at 0xFFFF_4000).&lt;br /&gt;
&lt;br /&gt;
The reset vector is located at the very begining of FEL mode: at address 0xFFFF_0000. On reset, it jumps to 0xFFFF_0028 where it loads 0xFFFF_4000 (eGON.BRM) into the program counter to be executed next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== eGON Boot ===&lt;br /&gt;
&lt;br /&gt;
The eGON Boot ROM performs a few tasks:&lt;br /&gt;
&lt;br /&gt;
# do some [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L19 co-processor setup] ([http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbciiaf.html c15], (virtual) System Control Coprocessor).&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L23 disables] the WatchDog Timer&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L28 setups] CPU, AXI, AHB and APB0 clocks&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L34 enables] AHB Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L38 enables] APB0 Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L40 sets] the Stack Pointer to 32K&lt;br /&gt;
# then it [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L41 jumps] to [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L84 'boot'] which immediately [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L86 jumps to] [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot]&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot] setups up some registers, then [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2560 checks the status pin] (often called FEL pin, BSP pin or '''uboot''')&lt;br /&gt;
## if the pin is low (connected to GND) [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L90 executes] [[FEL]] mode at 0xFFFF_0020.&lt;br /&gt;
##  If the pin is high it continues trying to boot from the following media and on failure continues to the next in order.&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L91 SD Card0] also known as [[A10/CCM#CCM_MMC0_CLK|MMC0]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L98 Internal NAND flash] also known as [[A10/CCM#CCM_NAND_CLK|NAND]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L104 SD Card2] also known as [[A10/CCM#CCM_MMC2_CLK|MMC2]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L111 SPI connected NOR flash] also known as [[A10/CCM#CCM_SPI0_CLK|SPI]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s##L117 If all fails], '''FEL/USBBoot''' mode is [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L120 executed] from 0xFFFF_0020&lt;br /&gt;
&lt;br /&gt;
As can be seen, the SoC has several ways to boot and a lot would need to go wrong or 'fail' before entering FEL/USBBoot mode. This is especially important if there is a valid header in the NAND flash. Obviously this can be abused, by corrupting the header and thus forcing failure. If no other boot options are available, then FEL mode should be the final result. As a bypass mechanism, the A10 has the so called ''Boot Select Pin (BSP)''. This pin is normally internally pulled up by a 50KΩ resistor. If the pin is pulled low to GND, the A10 will try to boot into FEL/USBBoot mode. Otherwise the above boot-order will be tried.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
boot-&amp;gt; check fel key pressed (yes)--&amp;gt; FEL mode (boot from USB OTG)&lt;br /&gt;
                          \  &lt;br /&gt;
                      (no) \&lt;br /&gt;
                            \-------&amp;gt; 1) try to boot from SMHC0 (SD card)&lt;br /&gt;
                                      2) try to boot from SMHC2 (eMMC)&lt;br /&gt;
                                      3) try to boot from SPI0 (SPI NOR Flash)&lt;br /&gt;
                                      4) FEL mode (boot from USB OTG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  FEL mode ===&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F1C 无 Boot Select Pin 会依次尝试 MMC0 ---&amp;gt; NAND ---&amp;gt; MMC2 ---&amp;gt; NOR，如果启动都失败，就会进入 FEL mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方参考设计是将 PC2 短接到 GND 用了个按钮标记为 BOOT，PC2 所在的 SPI0 接的是 系统 eMMC，作为个 参考，PC2  =  SPI0_MISO = SDC1-D0，短接到 GND 即可使 eMMC 失效&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 短接 flash 的 1、4 两脚，重新上电，上电后松开短接，即可重新进入 fel 模式&lt;br /&gt;
* 在启动到内核前，回车进入 uboot，执行 sf probe 0;sf erase 0 0x100000;reset 即可重新进入 fel 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEL mode 下 PC 可用 sunxi-fei 工具通过 USB 口与 SoC 通信&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel uboot /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel -p spiflash-write 0 /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 下 erase flash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;gt; sf probe 0    # init flash device&lt;br /&gt;
&amp;gt; sf erase 0 0x100000    # erase 1MB flash&lt;br /&gt;
&amp;gt; reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
* http://linux-sunxi.org/FEL&lt;br /&gt;
* http://linux-sunxi.org/FEL/USBBoot&lt;br /&gt;
* http://linux-sunxi.org/BROM&lt;br /&gt;
* http://linux-sunxi.org/Sunxi-tools&lt;br /&gt;
* http://nano.lichee.pro/get_started/first_eat.html#id6&lt;br /&gt;
* [https://whycan.cn/t_717.html F1C100s入坑记录]&lt;br /&gt;
* [https://whycan.cn/t_3138.html 尝试从零构建F1C100s开发环境]&lt;br /&gt;
* https://whycan.com/t_2179.html spi-flash &amp;amp; wifi &amp;amp; usb-gad&lt;br /&gt;
* [https://whycan.com/t_6402.html &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot failed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# reboot&lt;br /&gt;
# Stopping network: OK&lt;br /&gt;
Saving random seed... done.&lt;br /&gt;
Stopping logging: OK&lt;br /&gt;
The system is going down NOW!&lt;br /&gt;
Sent SIGTERM to all processes&lt;br /&gt;
Sent SIGKILL to   20.550344 reboot: Restarting system&lt;br /&gt;
   21.549981 Reboot failed -- System halted&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原因：未使能看门狗。系统 Restart 时，是利用取消喂狗来触发看门狗超时，从而引发复位。&lt;br /&gt;
&lt;br /&gt;
修正： 内核配置时，选择 &lt;br /&gt;
&lt;br /&gt;
  Device Drivers → Watchdog Timer Support  → WatchDog Timer Driver Core 和 Allwinner SoCs watchdog support&lt;br /&gt;
&lt;br /&gt;
确保如下选项打开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_WATCHDOG=y&lt;br /&gt;
CONFIG_WATCHDOG_CORE=y&lt;br /&gt;
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y&lt;br /&gt;
CONFIG_SUNXI_WATCHDOG=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重新编译内核即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
* [http://linux-sunxi.org/images/b/ba/F1C100s_Datasheet_V1.0.pdf F1C100s Datasheet 2015]&lt;br /&gt;
* [http://dl.linux-sunxi.org/F1C100/Allwinner_F1C100_datasheet_20110331.pdf F1C100 Datasheet 2011]&lt;br /&gt;
* [https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf F1C600 User Manual]&lt;br /&gt;
* [http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf H3 Datasheet]&lt;br /&gt;
* [https://debugdump.com/files/20171005/13/Allwinner_V3s_Datasheet_V1.0.pdf V3S datasheet] [http://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf V3s datasheet]&lt;br /&gt;
&lt;br /&gt;
*  http://nano.lichee.pro&lt;br /&gt;
* http://tang.lichee.pro&lt;br /&gt;
&lt;br /&gt;
* [https://elinux.org/Device_Tree_Reference Device Tree]&lt;br /&gt;
* [http://nano.lichee.pro/build_sys/devicetree.html 设备树简介]&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_6402.html 自制基于F1C100s/F1C200s的M5Pi]&lt;br /&gt;
* [https://whycan.com/t_6388.html F1C100S开发了一个项目，原始技术实现，裸奔XUI GUI框架]&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2736.html 投屏软件scrcpy在Linux上的移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/F1C</id>
		<title>F1C</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/F1C"/>
				<updated>2026-03-10T03:33:26Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* sunxi-tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Core overview ==&lt;br /&gt;
&lt;br /&gt;
* F1C100s / F1C200s&lt;br /&gt;
** USB 2.0 OTG, UART x3, SPI x2, TWI x3, &lt;br /&gt;
&lt;br /&gt;
* V831 &amp;lt;---&lt;br /&gt;
** USB 2.0 OTG, UART x4, SPI x2, TWI x4, GPIO x4&lt;br /&gt;
&lt;br /&gt;
* V851S (64MB), V851SE (64MB, SiP EPHY, no display),  V851S3 (128MB)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x6&lt;br /&gt;
&lt;br /&gt;
* V853 / V853s (LFBGA, no SiP RAM)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F1C100s Overview ==&lt;br /&gt;
&lt;br /&gt;
* ARM926-EJS, up to 900MHz&lt;br /&gt;
* 32KB I-Cache, 16KB D-Cache, 5-stage pipeline&lt;br /&gt;
* 32MB SiP DDR1 (F1C200s is 64MB SiP DDR1)&lt;br /&gt;
&lt;br /&gt;
* RGB LCD interface&lt;br /&gt;
* USB 2.0 OTG&lt;br /&gt;
* SDIO&lt;br /&gt;
* SPI x2 (SPI_SCLK: 3KHz ~ 100MHz)&lt;br /&gt;
* TWI x3&lt;br /&gt;
* UART x3&lt;br /&gt;
* TV out x 1, TV in x 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PWM x2&lt;br /&gt;
* LRADC x1&lt;br /&gt;
* Speaker x2 + Mic x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-blockdiagram.jpg | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-typical-app.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C-roadmap.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-pinmap.jpg | 650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 荔枝派 Pin Map ===&lt;br /&gt;
&lt;br /&gt;
[[文件:Lichee-nano-pin-map.png]]&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** UART0_RX --- PE0&lt;br /&gt;
** UART0_TX --- PE1&lt;br /&gt;
** dtb 中默认系统启动的串口 serial0:115200n8&lt;br /&gt;
** UART1_RX --- PD3 --- D5&lt;br /&gt;
** UART1_TX --- PD4 --- D6&lt;br /&gt;
** UART2_RX --- PD14 --- D20&lt;br /&gt;
** UART2_TX --- PD13 --- D19&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SPI1&lt;br /&gt;
** PA0 - SPI1_CS&lt;br /&gt;
** PA1 - SPI1_MOSI&lt;br /&gt;
** PA2 - SPI1_SCK&lt;br /&gt;
** PA3 - SPI1_MISO&lt;br /&gt;
** PE3 -- Reset -- D0&lt;br /&gt;
** PE4 -- Interrupt -- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB&lt;br /&gt;
** 右上角，PCLK 右边为 USB_DM (D-)&lt;br /&gt;
** 右上角，PCLK 左边为 USB_DP (D+)&lt;br /&gt;
** USB_ID，拉低为主机模式，拉高为设备模式。Nano 开发板将 USB_ID 47K 上拉到 3V3，同时 USB_ID 和 PE2 相连。dts 设置使用 PE2 作为检测管脚（默认 active high，即：高电平）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进入系统后，可通过改变 PE2 的高低电平来控制 USB 的模式。比如默认 dtb 设置 PE2 为 active high，则进系统后，设置 PE2 为低电平，则 USB 会切换为主机模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I2C0&lt;br /&gt;
** PE11 --- SCL&lt;br /&gt;
** PE12 --- SDA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* GPIO&lt;br /&gt;
** PE3 --- D0&lt;br /&gt;
** PE4 --- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/Lichee_nano.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
* Power&lt;br /&gt;
** VCC-CORE: 1.0 - 1.2V&lt;br /&gt;
** VCC-DRAM: 2.3 - 2.7V&lt;br /&gt;
** AVCC: 2.5 - 3.1V&lt;br /&gt;
** VCC-IO: 3.0 - 3.6V&lt;br /&gt;
** VCC-HP: 3.0 - 3.5V&lt;br /&gt;
** VCC-TV: 3.0 - 3.5V&lt;br /&gt;
** VCC-USB: 3.0 - 3.5V&lt;br /&gt;
&lt;br /&gt;
* SIP DDR1&lt;br /&gt;
** SVREF (P33) &lt;br /&gt;
&lt;br /&gt;
* 音频&lt;br /&gt;
** HPL, HPR 左右声道；HPCOM, HPCOMFP 接耳机插座&lt;br /&gt;
** LINEIN：可用于连接电吉他、电子琴、合成器等外界设备的音频信号，由于这些设备本身输出功率就比较大，因此需要连接到 Line in 端口录音，当然使用它们录音从某种程度上也可以被称为外部设备的“内录”。一般您使用的声卡越好，Line in里的噪音就会越低，录制效果也会比较好。&lt;br /&gt;
** MICIN：用于连接麦克风，和 Line in 的区别在于它有前置放大器，麦克风本身输出功率小，因此必须要有一个放大设备来放大音频信号&lt;br /&gt;
** VRA1, VRA2, FMINL, FMINR&lt;br /&gt;
&lt;br /&gt;
* TV&lt;br /&gt;
** TV_OUT&lt;br /&gt;
** TV_VRN, TV_VRP, TVIN1, TVIN0&lt;br /&gt;
&lt;br /&gt;
* KEY INPUT&lt;br /&gt;
** LRADC0: 6bit resolution; 0 - 2V, 250Hz; 3.0/2^6 = 0.047&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PE11 CLK Out ==&lt;br /&gt;
&lt;br /&gt;
PE11 管脚可以输出 clkout，给 CIF 摄像头的提供时钟源，节约成本&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;clk-mux@0x01c000f0&amp;quot;: {&lt;br /&gt;
		&amp;quot;parent&amp;quot;: [&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;losc&amp;quot;, &amp;quot;value&amp;quot;: 0 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;osc32k&amp;quot;, &amp;quot;value&amp;quot;: 1 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;hosc&amp;quot;, &amp;quot;value&amp;quot;: 2 }&lt;br /&gt;
		],&lt;br /&gt;
		&amp;quot;name&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 24, &amp;quot;width&amp;quot;: 2,&lt;br /&gt;
		&amp;quot;default&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;hosc&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;clk-ratio@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 20, &amp;quot;width&amp;quot;: 2, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-divider@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 8, &amp;quot;width&amp;quot;: 5, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-gate@0x01c000f0&amp;quot;: {&amp;quot;parent&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 31, &amp;quot;invert&amp;quot;: false, &amp;quot;default&amp;quot;: { &amp;quot;enable&amp;quot;: false } },&lt;br /&gt;
	&amp;quot;clk-link&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;link-clkout&amp;quot; },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可输出24MHZ，12MHZ，6MHZ。。。&lt;br /&gt;
&lt;br /&gt;
参考 patch: https://gitee.com/xboot/xboot/commit/245601d534de73748a37f05531ff7a11bdc0545c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
调试消息控制台设置：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
0 = KERN_EMERG      /* 系统即将崩溃 */&lt;br /&gt;
1 = KERN_ALERT      /* 需要立即关注 */&lt;br /&gt;
2 = KERN_CRIT       /* 紧急情况 */&lt;br /&gt;
3 = KERN_ERR        /* 错误消息 */&lt;br /&gt;
4 = KERN_WARNING    /* 警告消息 */&lt;br /&gt;
5 = KERN_NOTICE     /* 正常但需要注意 */&lt;br /&gt;
6 = KERN_INFO       /* 信息性消息 */&lt;br /&gt;
7 = KERN_DEBUG      /* 调试消息 */&lt;br /&gt;
&lt;br /&gt;
# 设置控制台级别&lt;br /&gt;
echo 6 &amp;gt; /proc/sys/kernel/printk        # 只显示 0-6 级别的消息&lt;br /&gt;
echo 8 &amp;gt; /proc/sys/kernel/printk        # 显示更多调试信息&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/printk        # 只显示紧急消息&lt;br /&gt;
&lt;br /&gt;
dmesg -n 8  # 效果同 echo 8 &amp;gt; /proc/sys/kernel/printk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone https://github.com/Icenowy/linux.git&lt;br /&gt;
&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
# 添加下面两行&lt;br /&gt;
192.30.253.112  github.com&lt;br /&gt;
151.101.73.194 github.global.ssl.fastly.net&lt;br /&gt;
&lt;br /&gt;
# 可自行通过dns检测网站检测github.global.ssl.fastly.net，更换为更快的ip地址&lt;br /&gt;
# 完整拉取linux极大，建议只拉取单层分支，减少等待时间：&lt;br /&gt;
$ git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.config: http://dl.sipeed.com/LICHEE/Nano/SDK/config    http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm menuconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8    #请自行修改编译线程数&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
arch/arm/boot/dts/suniv.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s-tesladr.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''arch/arm/boot/dts/Makefile:'''&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
dtb-$(CONFIG_MACH_SUNIV) += \&lt;br /&gt;
    suniv-f1c100s-ltegw.dtb \&lt;br /&gt;
    suniv-f1c100s-tesladr.dtb&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
查看 DTS 中对应的设备用了哪些关键字：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ grep -r of_property drivers/spi/ | grep spi-max-frequency&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SPI:'''&lt;br /&gt;
&lt;br /&gt;
SPI_SCLK: 3KHz ~ 100MHz&lt;br /&gt;
* SPI Nor Flash: spi-max-frequency = &amp;lt;50000000&amp;gt;; (50MHz)&lt;br /&gt;
* SPI 127x: spi-max-frequency = &amp;lt;10000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# CONFIG_SPI_SUN4I is not set&lt;br /&gt;
CONFIG_SPI_SUN6I=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
drivers/spi/spi-bitbang.o&lt;br /&gt;
drivers/spi/spidev.o&lt;br /&gt;
drivers/spi/spi-gpio.o&lt;br /&gt;
drivers/spi/spi.o&lt;br /&gt;
drivers/spi/spi-sun6i.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 leds {&lt;br /&gt;
             compatible = &amp;quot;gpio-leds&amp;quot;;&lt;br /&gt;
             blue_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:blue:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 4 GPIO_ACTIVE_LOW&amp;gt;; /* PE4 */&lt;br /&gt;
             };&lt;br /&gt;
             green_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:green:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 5 GPIO_ACTIVE_LOW&amp;gt;; /* PE5 */&lt;br /&gt;
                     default-state = &amp;quot;on&amp;quot;;&lt;br /&gt;
             };&lt;br /&gt;
             red_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:red:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 5 6 GPIO_ACTIVE_LOW&amp;gt;; /* PE6 */&lt;br /&gt;
             };&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
命令行方式：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat gpio.sh&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
if [ ! -e /sys/class/gpio/gpio$1 ]; then&lt;br /&gt;
    echo $1 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio$1/direction&lt;br /&gt;
echo $2 &amp;gt; /sys/class/gpio/gpio$1/value&lt;br /&gt;
&lt;br /&gt;
$ ./gpio.sh 105 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# A: 0&lt;br /&gt;
# B: 1&lt;br /&gt;
# C: 2&lt;br /&gt;
# D: 3&lt;br /&gt;
# E: 4&lt;br /&gt;
 * PB5 = 32*1 + 5 = 37&lt;br /&gt;
 * PC6= 32*2 + 6 = 70&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * PB5 = 32*1 + 5&lt;br /&gt;
 * PC6= 32*2 + 6&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
*/&lt;br /&gt;
gpio_direction_output(105, 0);     // 设置 PD9 为输出状态, 默认输出低电平&lt;br /&gt;
gpio_set_value(105, 1);                // 高电平&lt;br /&gt;
gpio_set_value(105, 0);                // 低电平&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
* pcf8563: 0x51&lt;br /&gt;
* sht3x: 0x44 / 0x45&lt;br /&gt;
* sht2x: 0x40&lt;br /&gt;
* sts3x: 0x4A / 0x4B&lt;br /&gt;
* pc10: 0x28&lt;br /&gt;
* pc10nsa: 0x6D&lt;br /&gt;
* pcz1: 0x28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TeslaDR:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        /* 在 pio 节点下，添加 i2c 引脚定义 */&lt;br /&gt;
        i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PE11&amp;quot;, &amp;quot;PE12&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M6:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
            i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PD12&amp;quot;, &amp;quot;PD0&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
            };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        i2c0: i2c@1C27000 {&lt;br /&gt;
            compatible = &amp;quot;allwinner,sun6i-a31-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x01C27000 0x400&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;7&amp;gt;;&lt;br /&gt;
            clocks = &amp;lt;&amp;amp;ccu CLK_BUS_I2C0&amp;gt;;&lt;br /&gt;
            resets = &amp;lt;&amp;amp;ccu RST_BUS_I2C0&amp;gt;;&lt;br /&gt;
            pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
            pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
            #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
            #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCL 和 SDA 必须 10K / 1K 拉高，否则 kernel 启动时会报：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    0.972082] i2c /dev entries driver&lt;br /&gt;
[    3.044909] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pcf8563@0x51:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# i2cdetect -y 0&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
常用命令：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@autoeco:~/f1c/linux$ date +%s -u&lt;br /&gt;
1758617972&lt;br /&gt;
&lt;br /&gt;
# date -s @1758617972&lt;br /&gt;
Tue Sep 23 08:59:32 UTC 2025&lt;br /&gt;
&lt;br /&gt;
# hwclock -r&lt;br /&gt;
[  369.265193] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.&lt;br /&gt;
hwclock: RTC_RD_TIME: Invalid argument&lt;br /&gt;
# hwclock -w&lt;br /&gt;
# hwclock -r&lt;br /&gt;
Tue Sep 23 08:59:59 2025  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LRADC ===&lt;br /&gt;
&lt;br /&gt;
* KEYADC_BaseAddr: 0x01C2 3400&lt;br /&gt;
* KEYADC_Ctrl_Reg: +0x00&lt;br /&gt;
* KEYADC_IntCtrl_Reg: +0x04&lt;br /&gt;
* KEYADC_IntStatus_Reg: +0x08&lt;br /&gt;
* KEYADC_Data_Reg: +0x0C&lt;br /&gt;
&lt;br /&gt;
* 6 位分辨率，检测电压范围 0~2V&lt;br /&gt;
* 最高 250Hz 采样率&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此 0 对应 0V，63 对应 2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取 4.2V 的电池电压，应采用 1% 的电阻分压，推荐 Vbat - 330K - 300K - GND，LRADC 测 300K 电阻的两端电压：&lt;br /&gt;
* 300/630 * 4.2 = 1.999&lt;br /&gt;
* 300/630 * 2.75 = 1.31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 电容触摸屏的支持 ===&lt;br /&gt;
&lt;br /&gt;
电容触摸屏的控制芯片为 GT911 使用 I2C 接口，我们要在 suniv-f1c100s-*.dts 文件中添加节点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/input/input.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/interrupt-controller/irq.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* 添加引用 */&lt;br /&gt;
&amp;amp;i2c0 {&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    gt911: touchscreen@14 {&lt;br /&gt;
        compatible = &amp;quot;goodix,gt911&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x14&amp;gt;;&lt;br /&gt;
        interrupt-parent = &amp;lt;&amp;amp;pio&amp;gt;;&lt;br /&gt;
        interrupts = &amp;lt;4 10 IRQ_TYPE_EDGE_FALLING&amp;gt;; /* (PE10) */&lt;br /&gt;
        pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
        pinctrl-0 = &amp;lt;&amp;amp;ts_reset_pin&amp;gt;;&lt;br /&gt;
        irq-gpios = &amp;lt;&amp;amp;pio 4 10 GPIO_ACTIVE_HIGH&amp;gt;; /* (PE10) */&lt;br /&gt;
        reset-gpios = &amp;lt;&amp;amp;pio 4 9 GPIO_ACTIVE_HIGH&amp;gt;; /* RST (PE9) */&lt;br /&gt;
        /* touchscreen-swapped-x-y */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;pio {&lt;br /&gt;
    ts_reset_pin: ts_reset_pin@0 {&lt;br /&gt;
        pins = &amp;quot;PE9&amp;quot;;&lt;br /&gt;
        function = &amp;quot;gpio_out&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若测试的触摸屏的 xy 方向颠倒，请添加或去掉 gt911 节点下的 touchscreen-swapped-x-y 属性。&lt;br /&gt;
&lt;br /&gt;
[https://item.taobao.com/item.htm?spm=a230r.1.14.87.57863beca0zG7h&amp;amp;id=589629409888&amp;amp;ns=1&amp;amp;abbucket=8#detail iTop 4412]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 长条屏 ===&lt;br /&gt;
&lt;br /&gt;
* 4.58 inch, 320x960, ST7701S, SPI+RGB, 40.37x117.9x2.08mm, Display 36.77x110.3mm, 40pin, 3.3V power supply&lt;br /&gt;
** 非 RGB 直驱，需通过 ST7701 转驱。得事先配置了 ST7701 才能够通过 RGB 口驱动。&lt;br /&gt;
** ST7701一上电需要10s-20s来启动，上电后最好延时20s再启动配置&lt;br /&gt;
** [https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628 LittleVGL ST7701][https://www.nxpic.org.cn/module/forum/thread-622198-1-1.html 捡屏幕第一弹—5寸480x854 ST7701屏]&lt;br /&gt;
&lt;br /&gt;
驱动实例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//ST7701S+AUO4.58&lt;br /&gt;
SPI_WriteComm (0xFF);     &lt;br /&gt;
SPI_WriteData (0x77); &lt;br /&gt;
SPI_WriteData (0x01);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x13);   &lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4.95 inch, 480x854, ST7701, SPI+RGB, 65x119x2.08mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI TFT 屏 ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.cnblogs.com/twzy/p/15160836.html SPI TFT屏幕修改与移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ESP8089 ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/notabucketofspam/ESP8089-SPI&lt;br /&gt;
* https://github.com/al177/esp8089&lt;br /&gt;
* https://whycan.com/t_5870.html&lt;br /&gt;
* https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
dts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;spi1 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    esp8089@0 {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        compatible = &amp;quot;boss,esp8089&amp;quot;;&lt;br /&gt;
        spi-cpol;&lt;br /&gt;
        spi-cpha;&lt;br /&gt;
        reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
        spi-max-frequency = &amp;lt;30000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        reset= &amp;lt;104&amp;gt;;&lt;br /&gt;
        interrupt= &amp;lt;103&amp;gt;;&lt;br /&gt;
        debug= &amp;lt;0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB OTG ===&lt;br /&gt;
&lt;br /&gt;
'''驱动'''通过读取 USB_ID 的电平，来判断是 host 模式还是 device 模式。&lt;br /&gt;
&lt;br /&gt;
micro-USB 口： pin1 - vcc，pin4 - usb_id, pin5 - gnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB_ID 检测脚，在 dts 配置为 PE2，默认 active high&lt;br /&gt;
* 当检测脚为高电平时，'''驱动 (driver)'''驱使硬件进入 device mode&lt;br /&gt;
* 当检测脚为低电平时，'''驱动 (driver)'''驱使硬件进入 host mode&lt;br /&gt;
* TeslaDR（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 10K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* nano 板（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 47K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* 当把 MicroUSB 的 usb_id 脚拉低时，即将 PE2 拉低，驱动驱使硬件进入 host mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USB Hub chip: gl850/gl850g&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device Mode (USB Gadget) ====&lt;br /&gt;
&lt;br /&gt;
F1C 作为 USB 设备，连接到主机。如果是 Linux 主机需要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo modprobe rndis_host&lt;br /&gt;
$ ifconfig usb0 192.168.3.1 up&lt;br /&gt;
&lt;br /&gt;
maybe:&lt;br /&gt;
$ sudo ifconfig enp0s20f0u3 192.168.3.1 up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作为客户端的 F1C 则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://blog.csdn.net/lan120576664/article/details/101081608&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的spi-flash系统编译创建全过程]&lt;br /&gt;
* [https://www.lotlab.org/2018/07/29/record-of-using-licheepi-part-2-using-linux-gadget/ 使用 Linux Gadget 复合设备共享网络与虚拟串口]&lt;br /&gt;
* [https://whycan.com/t_2889.html LicheePi Nano Usb复合设备RNDIS功能问题]&lt;br /&gt;
* [http://www.iipcb.com/blog/F1C100S_USB_DriverDebug1.html USB 裸机驱动]&lt;br /&gt;
&lt;br /&gt;
* https://irq5.io/2016/12/22/raspberry-pi-zero-as-multiple-usb-gadgets/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB 条码枪  ===&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_3963.html&lt;br /&gt;
* [https://whycan.com/t_6902.html 编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Serial ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_USB_SERIAL=y&lt;br /&gt;
CONFIG_USB_SERIAL_CH341=m&lt;br /&gt;
CONFIG_USB_SERIAL_CP210X=m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CH341 lsusb: 0x1a86:7523  (drivers/usb/serial/ch341.c)&lt;br /&gt;
* CP210x lsusb:  (drivers/usb/serial/cp210x.c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4G ===&lt;br /&gt;
&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
* [http://oldask.openluat.com/article/37 Air720模块Linux USB驱动以及PPP拨号说明]&lt;br /&gt;
* [http://oldask.openluat.com/article/79 Air720模块在linux设备上的RNDIS网卡使用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://wiki.jackslab.org/EMTC#AT Air724 AT 接口]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
入网不成功，可能导致枚举 usb 设备失败:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    7.780813] usb 1-1: new high-speed USB device number 2 using musb-hdrc&lt;br /&gt;
[    7.940764] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.210885] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.480803] usb 1-1: new high-speed USB device number 3 using musb-hdrc&lt;br /&gt;
[    8.630701] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.900700] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    9.020862] usb usb1-port1: attempt power cycle&lt;br /&gt;
[    9.510701] usb 1-1: new high-speed USB device number 4 using musb-hdrc&lt;br /&gt;
[    9.950713] usb 1-1: device not accepting address 4, error -71&lt;br /&gt;
[   10.100707] usb 1-1: new high-speed USB device number 5 using musb-hdrc&lt;br /&gt;
[   10.540723] usb 1-1: device not accepting address 5, error -71&lt;br /&gt;
[   10.546757] usb usb1-port1: unable to enumerate USB device&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
去除 sim 卡一样的错误 log，插入一个新卡一样，换 4G sim 卡一样的现象&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&lt;br /&gt;
ESP8266 接线：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
F1C200S			ESP8266Ex				ESP-12F&lt;br /&gt;
SPI_MOSI		SDIO_CMD(GPIO 11)		ESP_CS&lt;br /&gt;
SPI_MISO		SDIO_DATA_0(GPIO 7)		ESP_MISO&lt;br /&gt;
SPI_CLK			SDIO_CLK(GPIO 6)		ESP_CLK&lt;br /&gt;
WIFI_RESET(PD16/IO8)	CHOP_PU					ESP_EN(RST)&lt;br /&gt;
&lt;br /&gt;
SPI_CS			SDIO_DATA_3(GPIO 10)	ESP_GPIO10&lt;br /&gt;
WiFi_INT(PD18)	SDIO_DATA_1(GPIO 8)		ESP_MOSI&lt;br /&gt;
&lt;br /&gt;
精简 PIN，则：SDIO_DATA_3 (12F_GPIO10, SPI-CS) 拉低、SDIO_DATA_1 (12F_MOSI, WiFi_INT) 悬空&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot select:'''&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO15 (MTDO)&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO0&lt;br /&gt;
* GND &amp;lt;--- ESP8266_GPIO2&lt;br /&gt;
&lt;br /&gt;
ESP8266 Reset 后，通过判断如下管脚的状态来决定启动模式：  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MTDO 	GPIO0 	GPIO2 	Mode 	Description&lt;br /&gt;
L 	L 	H 	UART 	串口刷机&lt;br /&gt;
L 	H 	H 	Flash 	SPI Flash 正常启动&lt;br /&gt;
H 	x 	x 	SDIO 	SD-card 启动&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTDO 为 GPIO15&lt;br /&gt;
&lt;br /&gt;
启动时串口输出的 'boot mode:(x, y)' ， x 的低三位对应  {MTDO, GPIO0, GPIO2}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_2179.html  RTL8189 / rtl8723bs&lt;br /&gt;
* https://whycan.com/t_4149.html ESP8089 https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# ls -l /usr/lib/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3.19.13&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200.26.0&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200.26.0&lt;br /&gt;
# ls -l /usr/sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        296866 Jan  1  1970 wpa_cli&lt;br /&gt;
-rwx------    1 root     root        185953 Jan  1  1970 wpa_passphrase&lt;br /&gt;
-rwx------    1 root     root       9471254 Jan  1  1970 wpa_supplicant&lt;br /&gt;
# ls -l /sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwconfig&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwgetid&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwlist&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwpriv&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwspy&lt;br /&gt;
# ls -l /etc/ | grep 1970&lt;br /&gt;
-rw-------    1 root     root            96 Jan  1  1970 wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nginx:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep nginx&lt;br /&gt;
output/target/usr/sbin/nginx&lt;br /&gt;
output/target/etc/nginx&lt;br /&gt;
output/target/etc/nginx/win-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf&lt;br /&gt;
output/target/etc/nginx/mime.types&lt;br /&gt;
output/target/etc/nginx/koi-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi_params.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf.default&lt;br /&gt;
output/target/etc/nginx/fastcgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params&lt;br /&gt;
output/target/etc/nginx/uwsgi_params.default&lt;br /&gt;
output/target/etc/nginx/mime.types.default&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf&lt;br /&gt;
output/target/etc/nginx/uwsgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params.default&lt;br /&gt;
output/target/etc/nginx/koi-win&lt;br /&gt;
output/target/etc/init.d/S50nginx&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre&lt;br /&gt;
output/target/usr/lib/libpcre.a&lt;br /&gt;
output/target/usr/lib/libpcre.so&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcreposix.a&lt;br /&gt;
output/target/usr/lib/libpcreposix.so&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0.0.7&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcrecpp.a&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0.0.2&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/usr | grep html | grep -v pcre&lt;br /&gt;
output/target/usr/html/50x.html&lt;br /&gt;
output/target/usr/html/index.html&lt;br /&gt;
&lt;br /&gt;
$ scp -r output/target/usr/sbin/nginx root@192.168.1.204:/usr/sbin/&lt;br /&gt;
$ scp output/target/usr/lib/libpcre.so.1* root@192.168.1.204:/lib/&lt;br /&gt;
libpcre.so.1                                                                                               &lt;br /&gt;
libpcre.so.1.2.12 &lt;br /&gt;
$ scp -r output/target/etc/nginx root@192.168.1.204:/etc/&lt;br /&gt;
$ scp -r output/target/etc/init.d/S50nginx  root@192.168.1.204:/etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
CAN Gateway: https://whycan.com/t_6980.html&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/lushengchu_luis/article/details/77099239&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/a13698709128/article/details/104484467&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/weixin_59676688/article/details/124457092&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 摄像头 ==&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_5612.html 分享F1C100S的TVD源码，TVIN0接CVBS摄像头采集数据显示到LCD屏]&lt;br /&gt;
* [https://whycan.com/t_6902.html 站在微凉大侠的肩膀上，编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
* [https://whycan.com/t_2667.html 荔枝派zero 摄像头ov2640咸鱼使用（踩坑） 持续更新]&lt;br /&gt;
* [https://whycan.com/t_5327.html F1C200S使用OV2640拍照]&lt;br /&gt;
* [https://whycan.com/t_4056.html f1c100s的引脚怎么接csi摄像头]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install python-setuptools&lt;br /&gt;
$ git clone https://github.com/Lichee-Pi/u-boot.git&lt;br /&gt;
$ cd u-boot&lt;br /&gt;
# 切换到 Nano 分支&lt;br /&gt;
$ git checkout nano-v2018.01&lt;br /&gt;
&lt;br /&gt;
# 设定各项默认配置为 nano 的spiflash支持版，若不带spi-flash的板子，请换成 licheepi_nano_defconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sunxi-tools ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git&lt;br /&gt;
$ cd sunxi-tools&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果出现：fel_lib.c:26:20: fatal error: libusb.h: No such file or directory，那需要安装libusb：&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libusb-1.0-0-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
新到的一片 F1C 设备 Nor/Nand/SD 卡 都无系统，则自动进入 fel 模式，可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 查看芯片信息&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
# 列出所有芯片的信息&lt;br /&gt;
$ sudo sunxi-fel -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时有两种方式进行程序下载：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 1.以 uboot file-with-spl形式进行（单次运行，测试时个人推荐）&lt;br /&gt;
$ sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin  # 请自行修改到本机地址&lt;br /&gt;
&lt;br /&gt;
# 2.烧进 spi-flash （开机自启）&lt;br /&gt;
$ sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin&lt;br /&gt;
# note: 重新烧录或重进fel模式时，请在上电时拉低SPI flash 的 CS引脚&lt;br /&gt;
&lt;br /&gt;
# 加载并执行 uboot 的 spl&lt;br /&gt;
$ sudo sunxi-fel spl [文件名]&lt;br /&gt;
&lt;br /&gt;
# 把文件内容写入内存指定地址(-p 是显示写入进度) &lt;br /&gt;
$ sudo sunxi-fel -p write [地址] [文件名]&lt;br /&gt;
&lt;br /&gt;
# 调用指定地址的函数&lt;br /&gt;
$ sudo sunxi-fel exec [地址]&lt;br /&gt;
&lt;br /&gt;
# 显示spiflash的信息&lt;br /&gt;
$ sudo sunxi-fel spiflash-info&lt;br /&gt;
&lt;br /&gt;
# 读取spiflash指定地址的数据并写入到文件&lt;br /&gt;
$ sudo sunxi-fel spiflash-read [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&lt;br /&gt;
# 写入指定文件的指定长度的内容到spiflash的指定地址&lt;br /&gt;
$ sudo sunxi-fel spiflash-write [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
* http://nano.lichee.pro/build_sys/rootfs.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Buildroot ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget https://buildroot.org/downloads/buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ tar xvf buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ cd buildroot-2017.08/&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Buildroot Quick Start]]&lt;br /&gt;
&lt;br /&gt;
.config files: https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/buildroot.config&lt;br /&gt;
&lt;br /&gt;
快速添加一个 helloworld 包：http://www.chip-community.org/index.php/Startup_Program_with_Buildroot&lt;br /&gt;
&lt;br /&gt;
重 build 某个包：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-rebuild&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-dirclean&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-reinstall&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-source&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-show-depends&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-extract&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-staging&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-target&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-patch&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenWRT ====&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2573.html openwrt into spi-flash]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b licheepi-nano https://github.com/qinfengling/openwrt&lt;br /&gt;
cat &amp;gt; .config &amp;lt;&amp;lt; EOL&lt;br /&gt;
CONFIG_TARGET_sunxi=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9_DEVICE_suniv-f1c100s-licheepi-nano=y&lt;br /&gt;
CONFIG_DEVEL=y&lt;br /&gt;
CONFIG_BRCMFMAC_SDIO=y&lt;br /&gt;
CONFIG_BRCMFMAC_USB=y&lt;br /&gt;
CONFIG_DRIVER_11AC_SUPPORT=y&lt;br /&gt;
CONFIG_DRIVER_11N_SUPPORT=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_DEBUGFS=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_MESH=y&lt;br /&gt;
CONFIG_PACKAGE_brcmfmac-firmware-usb=y&lt;br /&gt;
CONFIG_PACKAGE_hostapd-common=y&lt;br /&gt;
CONFIG_PACKAGE_iw=y&lt;br /&gt;
CONFIG_PACKAGE_iwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-ahci-platform=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmfmac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmutil=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-cfg80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-libphy=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mac80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mmc=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-nls-base=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-of-mdio=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-rtc-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-scsi-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-sun4i-emac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-usb-core=y&lt;br /&gt;
CONFIG_PACKAGE_libiwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_swconfig=y&lt;br /&gt;
CONFIG_PACKAGE_wireless-regdb=y&lt;br /&gt;
CONFIG_PACKAGE_wpad-mini=y&lt;br /&gt;
CONFIG_SOFT_FLOAT=y&lt;br /&gt;
CONFIG_TARGET_OPTIONS=y&lt;br /&gt;
EOL&lt;br /&gt;
$ ./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;br /&gt;
$ make defconfig&lt;br /&gt;
$ make world&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/zhangheyang/openwrt&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* https://qinfengling.pro/build_openwrt_image_for_licheepi_nano.html&lt;br /&gt;
* [https://whycan.com/t_4279.html 尝试给f1c100s编译openwrt]&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的SPI-Flash系统编译创建全过程][https://whycan.com/t_2179.html 2]&lt;br /&gt;
* [[OpenWRT_Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig&lt;br /&gt;
&lt;br /&gt;
System configurration ---&amp;gt; [ ] Install timezone info&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/timezone&lt;br /&gt;
Etc/UTC&lt;br /&gt;
&lt;br /&gt;
$ ls -l /etc/localtime&lt;br /&gt;
/etc/localtime -&amp;gt; /usr/share/zoneinfo/Etc/UTC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deploy TF ===&lt;br /&gt;
&lt;br /&gt;
可以直接只用 TF 卡，分区时，前 3MB 留给 uboot 和 environments，第一个分区从 3MB 处开始&lt;br /&gt;
&lt;br /&gt;
'''给 U-Boot 的前 3MB:'''&lt;br /&gt;
&lt;br /&gt;
[[文件:F1c.tf.layout.png]]&lt;br /&gt;
&lt;br /&gt;
https://linux-sunxi.org/Bootable_SD_card&lt;br /&gt;
&lt;br /&gt;
需要将 uboot 写到 TF 卡 8KB 开始的位置&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''第一、二分区：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdX   # 进行分区操作&lt;br /&gt;
# 若已存分区即按 d 删除各个分区&lt;br /&gt;
# &lt;br /&gt;
# 通过 n 新建分区，第一分区16M，类型 c (W95 FAT32 LBA)，从 1MB 处 (start sector 2048) 开始，+16M；第二分区 +183M&lt;br /&gt;
# w 保存写入并退出&lt;br /&gt;
$ sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT&lt;br /&gt;
$ sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''第一分区：'''&lt;br /&gt;
* boot.scr    # u-boot 使用&lt;br /&gt;
* zImage&lt;br /&gt;
* suniv-f1c100s-licheepi-nano.dtb&lt;br /&gt;
&lt;br /&gt;
'''第二分区：'''&lt;br /&gt;
* 根文件系统内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''boot.scr 之生成：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat boot.cmd&lt;br /&gt;
setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw&lt;br /&gt;
load mmc 0:1 0x80C00000 suniv-f1c100s-ltegw.dtb&lt;br /&gt;
load mmc 0:1 0x80008000 zImage&lt;br /&gt;
bootz 0x80008000 - 0x80C00000&lt;br /&gt;
$ sudo apt install u-boot-tools&lt;br /&gt;
$ mkimage -C none -A arm -T script -d boot.cmd boot.scr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上电启动流程 ==&lt;br /&gt;
&lt;br /&gt;
After power-up, the F1C100s starts to fetch instructions from address '''0xFFFF_0000''' which is where the '''BROM''' is located at. It's an internal integrated 32 KB ROM Chip (Boot ROM or BROM).&lt;br /&gt;
&lt;br /&gt;
The BROM split up into two parts: The first part (at 0xFFFF_0000) is the '''FEL''' mode and the second is the '''eGON.BRM''' (located at 0xFFFF_4000).&lt;br /&gt;
&lt;br /&gt;
The reset vector is located at the very begining of FEL mode: at address 0xFFFF_0000. On reset, it jumps to 0xFFFF_0028 where it loads 0xFFFF_4000 (eGON.BRM) into the program counter to be executed next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== eGON Boot ===&lt;br /&gt;
&lt;br /&gt;
The eGON Boot ROM performs a few tasks:&lt;br /&gt;
&lt;br /&gt;
# do some [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L19 co-processor setup] ([http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbciiaf.html c15], (virtual) System Control Coprocessor).&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L23 disables] the WatchDog Timer&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L28 setups] CPU, AXI, AHB and APB0 clocks&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L34 enables] AHB Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L38 enables] APB0 Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L40 sets] the Stack Pointer to 32K&lt;br /&gt;
# then it [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L41 jumps] to [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L84 'boot'] which immediately [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L86 jumps to] [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot]&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot] setups up some registers, then [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2560 checks the status pin] (often called FEL pin, BSP pin or '''uboot''')&lt;br /&gt;
## if the pin is low (connected to GND) [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L90 executes] [[FEL]] mode at 0xFFFF_0020.&lt;br /&gt;
##  If the pin is high it continues trying to boot from the following media and on failure continues to the next in order.&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L91 SD Card0] also known as [[A10/CCM#CCM_MMC0_CLK|MMC0]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L98 Internal NAND flash] also known as [[A10/CCM#CCM_NAND_CLK|NAND]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L104 SD Card2] also known as [[A10/CCM#CCM_MMC2_CLK|MMC2]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L111 SPI connected NOR flash] also known as [[A10/CCM#CCM_SPI0_CLK|SPI]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s##L117 If all fails], '''FEL/USBBoot''' mode is [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L120 executed] from 0xFFFF_0020&lt;br /&gt;
&lt;br /&gt;
As can be seen, the SoC has several ways to boot and a lot would need to go wrong or 'fail' before entering FEL/USBBoot mode. This is especially important if there is a valid header in the NAND flash. Obviously this can be abused, by corrupting the header and thus forcing failure. If no other boot options are available, then FEL mode should be the final result. As a bypass mechanism, the A10 has the so called ''Boot Select Pin (BSP)''. This pin is normally internally pulled up by a 50KΩ resistor. If the pin is pulled low to GND, the A10 will try to boot into FEL/USBBoot mode. Otherwise the above boot-order will be tried.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
boot-&amp;gt; check fel key pressed (yes)--&amp;gt; FEL mode (boot from USB OTG)&lt;br /&gt;
                          \  &lt;br /&gt;
                      (no) \&lt;br /&gt;
                            \-------&amp;gt; 1) try to boot from SMHC0 (SD card)&lt;br /&gt;
                                      2) try to boot from SMHC2 (eMMC)&lt;br /&gt;
                                      3) try to boot from SPI0 (SPI NOR Flash)&lt;br /&gt;
                                      4) FEL mode (boot from USB OTG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  FEL mode ===&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F1C 无 Boot Select Pin 会依次尝试 MMC0 ---&amp;gt; NAND ---&amp;gt; MMC2 ---&amp;gt; NOR，如果启动都失败，就会进入 FEL mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方参考设计是将 PC2 短接到 GND 用了个按钮标记为 BOOT，PC2 所在的 SPI0 接的是 系统 eMMC，作为个 参考，PC2  =  SPI0_MISO = SDC1-D0，短接到 GND 即可使 eMMC 失效&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 短接 flash 的 1、4 两脚，重新上电，上电后松开短接，即可重新进入 fel 模式&lt;br /&gt;
* 在启动到内核前，回车进入 uboot，执行 sf probe 0;sf erase 0 0x100000;reset 即可重新进入 fel 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEL mode 下 PC 可用 sunxi-fei 工具通过 USB 口与 SoC 通信&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel uboot /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel -p spiflash-write 0 /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 下 erase flash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;gt; sf probe 0    # init flash device&lt;br /&gt;
&amp;gt; sf erase 0 0x100000    # erase 1MB flash&lt;br /&gt;
&amp;gt; reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
* http://linux-sunxi.org/FEL&lt;br /&gt;
* http://linux-sunxi.org/FEL/USBBoot&lt;br /&gt;
* http://linux-sunxi.org/BROM&lt;br /&gt;
* http://linux-sunxi.org/Sunxi-tools&lt;br /&gt;
* http://nano.lichee.pro/get_started/first_eat.html#id6&lt;br /&gt;
* [https://whycan.cn/t_717.html F1C100s入坑记录]&lt;br /&gt;
* [https://whycan.cn/t_3138.html 尝试从零构建F1C100s开发环境]&lt;br /&gt;
* https://whycan.com/t_2179.html spi-flash &amp;amp; wifi &amp;amp; usb-gad&lt;br /&gt;
* [https://whycan.com/t_6402.html &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot failed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# reboot&lt;br /&gt;
# Stopping network: OK&lt;br /&gt;
Saving random seed... done.&lt;br /&gt;
Stopping logging: OK&lt;br /&gt;
The system is going down NOW!&lt;br /&gt;
Sent SIGTERM to all processes&lt;br /&gt;
Sent SIGKILL to   20.550344 reboot: Restarting system&lt;br /&gt;
   21.549981 Reboot failed -- System halted&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原因：未使能看门狗。系统 Restart 时，是利用取消喂狗来触发看门狗超时，从而引发复位。&lt;br /&gt;
&lt;br /&gt;
修正： 内核配置时，选择 &lt;br /&gt;
&lt;br /&gt;
  Device Drivers → Watchdog Timer Support  → WatchDog Timer Driver Core 和 Allwinner SoCs watchdog support&lt;br /&gt;
&lt;br /&gt;
确保如下选项打开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_WATCHDOG=y&lt;br /&gt;
CONFIG_WATCHDOG_CORE=y&lt;br /&gt;
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y&lt;br /&gt;
CONFIG_SUNXI_WATCHDOG=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重新编译内核即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
* [http://linux-sunxi.org/images/b/ba/F1C100s_Datasheet_V1.0.pdf F1C100s Datasheet 2015]&lt;br /&gt;
* [http://dl.linux-sunxi.org/F1C100/Allwinner_F1C100_datasheet_20110331.pdf F1C100 Datasheet 2011]&lt;br /&gt;
* [https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf F1C600 User Manual]&lt;br /&gt;
* [http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf H3 Datasheet]&lt;br /&gt;
* [https://debugdump.com/files/20171005/13/Allwinner_V3s_Datasheet_V1.0.pdf V3S datasheet] [http://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf V3s datasheet]&lt;br /&gt;
&lt;br /&gt;
*  http://nano.lichee.pro&lt;br /&gt;
* http://tang.lichee.pro&lt;br /&gt;
&lt;br /&gt;
* [https://elinux.org/Device_Tree_Reference Device Tree]&lt;br /&gt;
* [http://nano.lichee.pro/build_sys/devicetree.html 设备树简介]&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_6402.html 自制基于F1C100s/F1C200s的M5Pi]&lt;br /&gt;
* [https://whycan.com/t_6388.html F1C100S开发了一个项目，原始技术实现，裸奔XUI GUI框架]&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2736.html 投屏软件scrcpy在Linux上的移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/F1C</id>
		<title>F1C</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/F1C"/>
				<updated>2026-03-10T03:33:15Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* sunxi-tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Core overview ==&lt;br /&gt;
&lt;br /&gt;
* F1C100s / F1C200s&lt;br /&gt;
** USB 2.0 OTG, UART x3, SPI x2, TWI x3, &lt;br /&gt;
&lt;br /&gt;
* V831 &amp;lt;---&lt;br /&gt;
** USB 2.0 OTG, UART x4, SPI x2, TWI x4, GPIO x4&lt;br /&gt;
&lt;br /&gt;
* V851S (64MB), V851SE (64MB, SiP EPHY, no display),  V851S3 (128MB)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x6&lt;br /&gt;
&lt;br /&gt;
* V853 / V853s (LFBGA, no SiP RAM)&lt;br /&gt;
** USB 2.0 DRD, UART x4, SPI x4, TWI x5, GPIO x8&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== F1C100s Overview ==&lt;br /&gt;
&lt;br /&gt;
* ARM926-EJS, up to 900MHz&lt;br /&gt;
* 32KB I-Cache, 16KB D-Cache, 5-stage pipeline&lt;br /&gt;
* 32MB SiP DDR1 (F1C200s is 64MB SiP DDR1)&lt;br /&gt;
&lt;br /&gt;
* RGB LCD interface&lt;br /&gt;
* USB 2.0 OTG&lt;br /&gt;
* SDIO&lt;br /&gt;
* SPI x2 (SPI_SCLK: 3KHz ~ 100MHz)&lt;br /&gt;
* TWI x3&lt;br /&gt;
* UART x3&lt;br /&gt;
* TV out x 1, TV in x 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* PWM x2&lt;br /&gt;
* LRADC x1&lt;br /&gt;
* Speaker x2 + Mic x1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-blockdiagram.jpg | 700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-typical-app.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C-roadmap.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:F1C100s-pinmap.jpg | 650px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 荔枝派 Pin Map ===&lt;br /&gt;
&lt;br /&gt;
[[文件:Lichee-nano-pin-map.png]]&lt;br /&gt;
&lt;br /&gt;
* UART&lt;br /&gt;
** UART0_RX --- PE0&lt;br /&gt;
** UART0_TX --- PE1&lt;br /&gt;
** dtb 中默认系统启动的串口 serial0:115200n8&lt;br /&gt;
** UART1_RX --- PD3 --- D5&lt;br /&gt;
** UART1_TX --- PD4 --- D6&lt;br /&gt;
** UART2_RX --- PD14 --- D20&lt;br /&gt;
** UART2_TX --- PD13 --- D19&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* SPI1&lt;br /&gt;
** PA0 - SPI1_CS&lt;br /&gt;
** PA1 - SPI1_MOSI&lt;br /&gt;
** PA2 - SPI1_SCK&lt;br /&gt;
** PA3 - SPI1_MISO&lt;br /&gt;
** PE3 -- Reset -- D0&lt;br /&gt;
** PE4 -- Interrupt -- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB&lt;br /&gt;
** 右上角，PCLK 右边为 USB_DM (D-)&lt;br /&gt;
** 右上角，PCLK 左边为 USB_DP (D+)&lt;br /&gt;
** USB_ID，拉低为主机模式，拉高为设备模式。Nano 开发板将 USB_ID 47K 上拉到 3V3，同时 USB_ID 和 PE2 相连。dts 设置使用 PE2 作为检测管脚（默认 active high，即：高电平）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进入系统后，可通过改变 PE2 的高低电平来控制 USB 的模式。比如默认 dtb 设置 PE2 为 active high，则进系统后，设置 PE2 为低电平，则 USB 会切换为主机模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I2C0&lt;br /&gt;
** PE11 --- SCL&lt;br /&gt;
** PE12 --- SDA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* GPIO&lt;br /&gt;
** PE3 --- D0&lt;br /&gt;
** PE4 --- D1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/Lichee_nano.pdf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 最小系统 ==&lt;br /&gt;
&lt;br /&gt;
* Power&lt;br /&gt;
** VCC-CORE: 1.0 - 1.2V&lt;br /&gt;
** VCC-DRAM: 2.3 - 2.7V&lt;br /&gt;
** AVCC: 2.5 - 3.1V&lt;br /&gt;
** VCC-IO: 3.0 - 3.6V&lt;br /&gt;
** VCC-HP: 3.0 - 3.5V&lt;br /&gt;
** VCC-TV: 3.0 - 3.5V&lt;br /&gt;
** VCC-USB: 3.0 - 3.5V&lt;br /&gt;
&lt;br /&gt;
* SIP DDR1&lt;br /&gt;
** SVREF (P33) &lt;br /&gt;
&lt;br /&gt;
* 音频&lt;br /&gt;
** HPL, HPR 左右声道；HPCOM, HPCOMFP 接耳机插座&lt;br /&gt;
** LINEIN：可用于连接电吉他、电子琴、合成器等外界设备的音频信号，由于这些设备本身输出功率就比较大，因此需要连接到 Line in 端口录音，当然使用它们录音从某种程度上也可以被称为外部设备的“内录”。一般您使用的声卡越好，Line in里的噪音就会越低，录制效果也会比较好。&lt;br /&gt;
** MICIN：用于连接麦克风，和 Line in 的区别在于它有前置放大器，麦克风本身输出功率小，因此必须要有一个放大设备来放大音频信号&lt;br /&gt;
** VRA1, VRA2, FMINL, FMINR&lt;br /&gt;
&lt;br /&gt;
* TV&lt;br /&gt;
** TV_OUT&lt;br /&gt;
** TV_VRN, TV_VRP, TVIN1, TVIN0&lt;br /&gt;
&lt;br /&gt;
* KEY INPUT&lt;br /&gt;
** LRADC0: 6bit resolution; 0 - 2V, 250Hz; 3.0/2^6 = 0.047&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PE11 CLK Out ==&lt;br /&gt;
&lt;br /&gt;
PE11 管脚可以输出 clkout，给 CIF 摄像头的提供时钟源，节约成本&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;quot;clk-mux@0x01c000f0&amp;quot;: {&lt;br /&gt;
		&amp;quot;parent&amp;quot;: [&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;losc&amp;quot;, &amp;quot;value&amp;quot;: 0 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;osc32k&amp;quot;, &amp;quot;value&amp;quot;: 1 },&lt;br /&gt;
			{ &amp;quot;name&amp;quot;: &amp;quot;hosc&amp;quot;, &amp;quot;value&amp;quot;: 2 }&lt;br /&gt;
		],&lt;br /&gt;
		&amp;quot;name&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 24, &amp;quot;width&amp;quot;: 2,&lt;br /&gt;
		&amp;quot;default&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;hosc&amp;quot; }&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;clk-ratio@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;mux-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 20, &amp;quot;width&amp;quot;: 2, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-divider@0x01c000f0&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;ratio-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 8, &amp;quot;width&amp;quot;: 5, &amp;quot;default&amp;quot;: { &amp;quot;rate&amp;quot;: 24000000 } },&lt;br /&gt;
	&amp;quot;clk-gate@0x01c000f0&amp;quot;: {&amp;quot;parent&amp;quot;: &amp;quot;div-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;shift&amp;quot;: 31, &amp;quot;invert&amp;quot;: false, &amp;quot;default&amp;quot;: { &amp;quot;enable&amp;quot;: false } },&lt;br /&gt;
	&amp;quot;clk-link&amp;quot;: { &amp;quot;parent&amp;quot;: &amp;quot;gate-clkout&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;link-clkout&amp;quot; },&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可输出24MHZ，12MHZ，6MHZ。。。&lt;br /&gt;
&lt;br /&gt;
参考 patch: https://gitee.com/xboot/xboot/commit/245601d534de73748a37f05531ff7a11bdc0545c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel==&lt;br /&gt;
&lt;br /&gt;
调试消息控制台设置：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
0 = KERN_EMERG      /* 系统即将崩溃 */&lt;br /&gt;
1 = KERN_ALERT      /* 需要立即关注 */&lt;br /&gt;
2 = KERN_CRIT       /* 紧急情况 */&lt;br /&gt;
3 = KERN_ERR        /* 错误消息 */&lt;br /&gt;
4 = KERN_WARNING    /* 警告消息 */&lt;br /&gt;
5 = KERN_NOTICE     /* 正常但需要注意 */&lt;br /&gt;
6 = KERN_INFO       /* 信息性消息 */&lt;br /&gt;
7 = KERN_DEBUG      /* 调试消息 */&lt;br /&gt;
&lt;br /&gt;
# 设置控制台级别&lt;br /&gt;
echo 6 &amp;gt; /proc/sys/kernel/printk        # 只显示 0-6 级别的消息&lt;br /&gt;
echo 8 &amp;gt; /proc/sys/kernel/printk        # 显示更多调试信息&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/kernel/printk        # 只显示紧急消息&lt;br /&gt;
&lt;br /&gt;
dmesg -n 8  # 效果同 echo 8 &amp;gt; /proc/sys/kernel/printk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone https://github.com/Icenowy/linux.git&lt;br /&gt;
&lt;br /&gt;
$ sudo vim /etc/hosts&lt;br /&gt;
# 添加下面两行&lt;br /&gt;
192.30.253.112  github.com&lt;br /&gt;
151.101.73.194 github.global.ssl.fastly.net&lt;br /&gt;
&lt;br /&gt;
# 可自行通过dns检测网站检测github.global.ssl.fastly.net，更换为更快的ip地址&lt;br /&gt;
# 完整拉取linux极大，建议只拉取单层分支，减少等待时间：&lt;br /&gt;
$ git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
.config: http://dl.sipeed.com/LICHEE/Nano/SDK/config    http://nano.lichee.pro/_static/step_by_step/lichee_nano_linux.config&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm menuconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8    #请自行修改编译线程数&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs&lt;br /&gt;
&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- M=drivers/staging/sx126x/ modules&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DTB ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
arch/arm/boot/dts/suniv.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s.dtsi&lt;br /&gt;
arch/arm/boot/dts/suniv-f1c100s-tesladr.dts&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''arch/arm/boot/dts/Makefile:'''&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
......&lt;br /&gt;
dtb-$(CONFIG_MACH_SUNIV) += \&lt;br /&gt;
    suniv-f1c100s-ltegw.dtb \&lt;br /&gt;
    suniv-f1c100s-tesladr.dtb&lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
查看 DTS 中对应的设备用了哪些关键字：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ grep -r of_property drivers/spi/ | grep spi-max-frequency&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''SPI:'''&lt;br /&gt;
&lt;br /&gt;
SPI_SCLK: 3KHz ~ 100MHz&lt;br /&gt;
* SPI Nor Flash: spi-max-frequency = &amp;lt;50000000&amp;gt;; (50MHz)&lt;br /&gt;
* SPI 127x: spi-max-frequency = &amp;lt;10000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# CONFIG_SPI_SUN4I is not set&lt;br /&gt;
CONFIG_SPI_SUN6I=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
drivers/spi/spi-bitbang.o&lt;br /&gt;
drivers/spi/spidev.o&lt;br /&gt;
drivers/spi/spi-gpio.o&lt;br /&gt;
drivers/spi/spi.o&lt;br /&gt;
drivers/spi/spi-sun6i.o&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 leds {&lt;br /&gt;
             compatible = &amp;quot;gpio-leds&amp;quot;;&lt;br /&gt;
             blue_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:blue:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 4 GPIO_ACTIVE_LOW&amp;gt;; /* PE4 */&lt;br /&gt;
             };&lt;br /&gt;
             green_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:green:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 4 5 GPIO_ACTIVE_LOW&amp;gt;; /* PE5 */&lt;br /&gt;
                     default-state = &amp;quot;on&amp;quot;;&lt;br /&gt;
             };&lt;br /&gt;
             red_led {&lt;br /&gt;
                     label = &amp;quot;licheepi:red:usr&amp;quot;;&lt;br /&gt;
                     gpios = &amp;lt;&amp;amp;pio 5 6 GPIO_ACTIVE_LOW&amp;gt;; /* PE6 */&lt;br /&gt;
             };&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
命令行方式：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat gpio.sh&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
&lt;br /&gt;
if [ ! -e /sys/class/gpio/gpio$1 ]; then&lt;br /&gt;
    echo $1 &amp;gt; /sys/class/gpio/export&lt;br /&gt;
fi&lt;br /&gt;
echo out &amp;gt; /sys/class/gpio/gpio$1/direction&lt;br /&gt;
echo $2 &amp;gt; /sys/class/gpio/gpio$1/value&lt;br /&gt;
&lt;br /&gt;
$ ./gpio.sh 105 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# A: 0&lt;br /&gt;
# B: 1&lt;br /&gt;
# C: 2&lt;br /&gt;
# D: 3&lt;br /&gt;
# E: 4&lt;br /&gt;
 * PB5 = 32*1 + 5 = 37&lt;br /&gt;
 * PC6= 32*2 + 6 = 70&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/gpio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * PB5 = 32*1 + 5&lt;br /&gt;
 * PC6= 32*2 + 6&lt;br /&gt;
 * PD9 = 32*3 + 9 = 105&lt;br /&gt;
*/&lt;br /&gt;
gpio_direction_output(105, 0);     // 设置 PD9 为输出状态, 默认输出低电平&lt;br /&gt;
gpio_set_value(105, 1);                // 高电平&lt;br /&gt;
gpio_set_value(105, 0);                // 低电平&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I2C ===&lt;br /&gt;
&lt;br /&gt;
* pcf8563: 0x51&lt;br /&gt;
* sht3x: 0x44 / 0x45&lt;br /&gt;
* sht2x: 0x40&lt;br /&gt;
* sts3x: 0x4A / 0x4B&lt;br /&gt;
* pc10: 0x28&lt;br /&gt;
* pc10nsa: 0x6D&lt;br /&gt;
* pcz1: 0x28&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TeslaDR:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        /* 在 pio 节点下，添加 i2c 引脚定义 */&lt;br /&gt;
        i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PE11&amp;quot;, &amp;quot;PE12&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
M6:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
            i2c0_pins: i2c0 {&lt;br /&gt;
                pins = &amp;quot;PD12&amp;quot;, &amp;quot;PD0&amp;quot;;&lt;br /&gt;
                function = &amp;quot;i2c0&amp;quot;;&lt;br /&gt;
            };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
        i2c0: i2c@1C27000 {&lt;br /&gt;
            compatible = &amp;quot;allwinner,sun6i-a31-i2c&amp;quot;;&lt;br /&gt;
            reg = &amp;lt;0x01C27000 0x400&amp;gt;;&lt;br /&gt;
            interrupts = &amp;lt;7&amp;gt;;&lt;br /&gt;
            clocks = &amp;lt;&amp;amp;ccu CLK_BUS_I2C0&amp;gt;;&lt;br /&gt;
            resets = &amp;lt;&amp;amp;ccu RST_BUS_I2C0&amp;gt;;&lt;br /&gt;
            pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
            pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
            status = &amp;quot;disabled&amp;quot;;&lt;br /&gt;
            #address-cells = &amp;lt;1&amp;gt;;&lt;br /&gt;
            #size-cells = &amp;lt;0&amp;gt;;&lt;br /&gt;
        };&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCL 和 SDA 必须 10K / 1K 拉高，否则 kernel 启动时会报：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    0.972082] i2c /dev entries driver&lt;br /&gt;
[    3.044909] i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pcf8563@0x51:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# i2cdetect -y 0&lt;br /&gt;
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
00:          -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --&lt;br /&gt;
70: -- -- -- -- -- -- -- --&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
常用命令：&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@autoeco:~/f1c/linux$ date +%s -u&lt;br /&gt;
1758617972&lt;br /&gt;
&lt;br /&gt;
# date -s @1758617972&lt;br /&gt;
Tue Sep 23 08:59:32 UTC 2025&lt;br /&gt;
&lt;br /&gt;
# hwclock -r&lt;br /&gt;
[  369.265193] rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable.&lt;br /&gt;
hwclock: RTC_RD_TIME: Invalid argument&lt;br /&gt;
# hwclock -w&lt;br /&gt;
# hwclock -r&lt;br /&gt;
Tue Sep 23 08:59:59 2025  0.000000 seconds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== LRADC ===&lt;br /&gt;
&lt;br /&gt;
* KEYADC_BaseAddr: 0x01C2 3400&lt;br /&gt;
* KEYADC_Ctrl_Reg: +0x00&lt;br /&gt;
* KEYADC_IntCtrl_Reg: +0x04&lt;br /&gt;
* KEYADC_IntStatus_Reg: +0x08&lt;br /&gt;
* KEYADC_Data_Reg: +0x0C&lt;br /&gt;
&lt;br /&gt;
* 6 位分辨率，检测电压范围 0~2V&lt;br /&gt;
* 最高 250Hz 采样率&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
因此 0 对应 0V，63 对应 2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取 4.2V 的电池电压，应采用 1% 的电阻分压，推荐 Vbat - 330K - 300K - GND，LRADC 测 300K 电阻的两端电压：&lt;br /&gt;
* 300/630 * 4.2 = 1.999&lt;br /&gt;
* 300/630 * 2.75 = 1.31&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 电容触摸屏的支持 ===&lt;br /&gt;
&lt;br /&gt;
电容触摸屏的控制芯片为 GT911 使用 I2C 接口，我们要在 suniv-f1c100s-*.dts 文件中添加节点：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/input/input.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dt-bindings/interrupt-controller/irq.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* 添加引用 */&lt;br /&gt;
&amp;amp;i2c0 {&lt;br /&gt;
    pinctrl-0 = &amp;lt;&amp;amp;i2c0_pins&amp;gt;;&lt;br /&gt;
    pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    gt911: touchscreen@14 {&lt;br /&gt;
        compatible = &amp;quot;goodix,gt911&amp;quot;;&lt;br /&gt;
        reg = &amp;lt;0x14&amp;gt;;&lt;br /&gt;
        interrupt-parent = &amp;lt;&amp;amp;pio&amp;gt;;&lt;br /&gt;
        interrupts = &amp;lt;4 10 IRQ_TYPE_EDGE_FALLING&amp;gt;; /* (PE10) */&lt;br /&gt;
        pinctrl-names = &amp;quot;default&amp;quot;;&lt;br /&gt;
        pinctrl-0 = &amp;lt;&amp;amp;ts_reset_pin&amp;gt;;&lt;br /&gt;
        irq-gpios = &amp;lt;&amp;amp;pio 4 10 GPIO_ACTIVE_HIGH&amp;gt;; /* (PE10) */&lt;br /&gt;
        reset-gpios = &amp;lt;&amp;amp;pio 4 9 GPIO_ACTIVE_HIGH&amp;gt;; /* RST (PE9) */&lt;br /&gt;
        /* touchscreen-swapped-x-y */&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;pio {&lt;br /&gt;
    ts_reset_pin: ts_reset_pin@0 {&lt;br /&gt;
        pins = &amp;quot;PE9&amp;quot;;&lt;br /&gt;
        function = &amp;quot;gpio_out&amp;quot;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若测试的触摸屏的 xy 方向颠倒，请添加或去掉 gt911 节点下的 touchscreen-swapped-x-y 属性。&lt;br /&gt;
&lt;br /&gt;
[https://item.taobao.com/item.htm?spm=a230r.1.14.87.57863beca0zG7h&amp;amp;id=589629409888&amp;amp;ns=1&amp;amp;abbucket=8#detail iTop 4412]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 长条屏 ===&lt;br /&gt;
&lt;br /&gt;
* 4.58 inch, 320x960, ST7701S, SPI+RGB, 40.37x117.9x2.08mm, Display 36.77x110.3mm, 40pin, 3.3V power supply&lt;br /&gt;
** 非 RGB 直驱，需通过 ST7701 转驱。得事先配置了 ST7701 才能够通过 RGB 口驱动。&lt;br /&gt;
** ST7701一上电需要10s-20s来启动，上电后最好延时20s再启动配置&lt;br /&gt;
** [https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628 LittleVGL ST7701][https://www.nxpic.org.cn/module/forum/thread-622198-1-1.html 捡屏幕第一弹—5寸480x854 ST7701屏]&lt;br /&gt;
&lt;br /&gt;
驱动实例：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
//ST7701S+AUO4.58&lt;br /&gt;
SPI_WriteComm (0xFF);     &lt;br /&gt;
SPI_WriteData (0x77); &lt;br /&gt;
SPI_WriteData (0x01);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x00);   &lt;br /&gt;
SPI_WriteData (0x13);   &lt;br /&gt;
......&lt;br /&gt;
......&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 4.95 inch, 480x854, ST7701, SPI+RGB, 65x119x2.08mm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI TFT 屏 ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.cnblogs.com/twzy/p/15160836.html SPI TFT屏幕修改与移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ESP8089 ===&lt;br /&gt;
&lt;br /&gt;
* https://github.com/notabucketofspam/ESP8089-SPI&lt;br /&gt;
* https://github.com/al177/esp8089&lt;br /&gt;
* https://whycan.com/t_5870.html&lt;br /&gt;
* https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
dts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;spi1 {&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    esp8089@0 {&lt;br /&gt;
        status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
        compatible = &amp;quot;boss,esp8089&amp;quot;;&lt;br /&gt;
        spi-cpol;&lt;br /&gt;
        spi-cpha;&lt;br /&gt;
        reg = &amp;lt;0&amp;gt;;&lt;br /&gt;
        spi-max-frequency = &amp;lt;30000000&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
        reset= &amp;lt;104&amp;gt;;&lt;br /&gt;
        interrupt= &amp;lt;103&amp;gt;;&lt;br /&gt;
        debug= &amp;lt;0&amp;gt;;&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB OTG ===&lt;br /&gt;
&lt;br /&gt;
'''驱动'''通过读取 USB_ID 的电平，来判断是 host 模式还是 device 模式。&lt;br /&gt;
&lt;br /&gt;
micro-USB 口： pin1 - vcc，pin4 - usb_id, pin5 - gnd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* USB_ID 检测脚，在 dts 配置为 PE2，默认 active high&lt;br /&gt;
* 当检测脚为高电平时，'''驱动 (driver)'''驱使硬件进入 device mode&lt;br /&gt;
* 当检测脚为低电平时，'''驱动 (driver)'''驱使硬件进入 host mode&lt;br /&gt;
* TeslaDR（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 10K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* nano 板（PE2 连接 MicroUSB 的 usb_id 脚）默认把 PE2 用 47K 拉高，dts 设置 PE2 默认 HIGH，因此默认进 device mode&lt;br /&gt;
* 当把 MicroUSB 的 usb_id 脚拉低时，即将 PE2 拉低，驱动驱使硬件进入 host mode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;amp;usb_otg {&lt;br /&gt;
    dr_mode = &amp;quot;otg&amp;quot;;&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;amp;usbphy {&lt;br /&gt;
    usb0_id_det-gpio = &amp;lt;&amp;amp;pio 4 2 GPIO_ACTIVE_HIGH&amp;gt;; /* PE2 */&lt;br /&gt;
    status = &amp;quot;okay&amp;quot;;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
USB Hub chip: gl850/gl850g&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Device Mode (USB Gadget) ====&lt;br /&gt;
&lt;br /&gt;
F1C 作为 USB 设备，连接到主机。如果是 Linux 主机需要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo modprobe rndis_host&lt;br /&gt;
$ ifconfig usb0 192.168.3.1 up&lt;br /&gt;
&lt;br /&gt;
maybe:&lt;br /&gt;
$ sudo ifconfig enp0s20f0u3 192.168.3.1 up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作为客户端的 F1C 则：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://blog.csdn.net/lan120576664/article/details/101081608&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的spi-flash系统编译创建全过程]&lt;br /&gt;
* [https://www.lotlab.org/2018/07/29/record-of-using-licheepi-part-2-using-linux-gadget/ 使用 Linux Gadget 复合设备共享网络与虚拟串口]&lt;br /&gt;
* [https://whycan.com/t_2889.html LicheePi Nano Usb复合设备RNDIS功能问题]&lt;br /&gt;
* [http://www.iipcb.com/blog/F1C100S_USB_DriverDebug1.html USB 裸机驱动]&lt;br /&gt;
&lt;br /&gt;
* https://irq5.io/2016/12/22/raspberry-pi-zero-as-multiple-usb-gadgets/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  USB 条码枪  ===&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_3963.html&lt;br /&gt;
* [https://whycan.com/t_6902.html 编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== USB Serial ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_USB_SERIAL=y&lt;br /&gt;
CONFIG_USB_SERIAL_CH341=m&lt;br /&gt;
CONFIG_USB_SERIAL_CP210X=m&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CH341 lsusb: 0x1a86:7523  (drivers/usb/serial/ch341.c)&lt;br /&gt;
* CP210x lsusb:  (drivers/usb/serial/cp210x.c)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4G ===&lt;br /&gt;
&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
* [http://oldask.openluat.com/article/37 Air720模块Linux USB驱动以及PPP拨号说明]&lt;br /&gt;
* [http://oldask.openluat.com/article/79 Air720模块在linux设备上的RNDIS网卡使用]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://wiki.jackslab.org/EMTC#AT Air724 AT 接口]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
入网不成功，可能导致枚举 usb 设备失败:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
[    7.780813] usb 1-1: new high-speed USB device number 2 using musb-hdrc&lt;br /&gt;
[    7.940764] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.210885] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.480803] usb 1-1: new high-speed USB device number 3 using musb-hdrc&lt;br /&gt;
[    8.630701] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    8.900700] usb 1-1: device descriptor read/64, error -71&lt;br /&gt;
[    9.020862] usb usb1-port1: attempt power cycle&lt;br /&gt;
[    9.510701] usb 1-1: new high-speed USB device number 4 using musb-hdrc&lt;br /&gt;
[    9.950713] usb 1-1: device not accepting address 4, error -71&lt;br /&gt;
[   10.100707] usb 1-1: new high-speed USB device number 5 using musb-hdrc&lt;br /&gt;
[   10.540723] usb 1-1: device not accepting address 5, error -71&lt;br /&gt;
[   10.546757] usb usb1-port1: unable to enumerate USB device&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
去除 sim 卡一样的错误 log，插入一个新卡一样，换 4G sim 卡一样的现象&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== WiFi ===&lt;br /&gt;
&lt;br /&gt;
ESP8266 接线：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
F1C200S			ESP8266Ex				ESP-12F&lt;br /&gt;
SPI_MOSI		SDIO_CMD(GPIO 11)		ESP_CS&lt;br /&gt;
SPI_MISO		SDIO_DATA_0(GPIO 7)		ESP_MISO&lt;br /&gt;
SPI_CLK			SDIO_CLK(GPIO 6)		ESP_CLK&lt;br /&gt;
WIFI_RESET(PD16/IO8)	CHOP_PU					ESP_EN(RST)&lt;br /&gt;
&lt;br /&gt;
SPI_CS			SDIO_DATA_3(GPIO 10)	ESP_GPIO10&lt;br /&gt;
WiFi_INT(PD18)	SDIO_DATA_1(GPIO 8)		ESP_MOSI&lt;br /&gt;
&lt;br /&gt;
精简 PIN，则：SDIO_DATA_3 (12F_GPIO10, SPI-CS) 拉低、SDIO_DATA_1 (12F_MOSI, WiFi_INT) 悬空&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Boot select:'''&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO15 (MTDO)&lt;br /&gt;
* 3V3 &amp;lt;--- ESP8266_GPIO0&lt;br /&gt;
* GND &amp;lt;--- ESP8266_GPIO2&lt;br /&gt;
&lt;br /&gt;
ESP8266 Reset 后，通过判断如下管脚的状态来决定启动模式：  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
MTDO 	GPIO0 	GPIO2 	Mode 	Description&lt;br /&gt;
L 	L 	H 	UART 	串口刷机&lt;br /&gt;
L 	H 	H 	Flash 	SPI Flash 正常启动&lt;br /&gt;
H 	x 	x 	SDIO 	SD-card 启动&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MTDO 为 GPIO15&lt;br /&gt;
&lt;br /&gt;
启动时串口输出的 'boot mode:(x, y)' ， x 的低三位对应  {MTDO, GPIO0, GPIO2}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://whycan.com/t_2179.html  RTL8189 / rtl8723bs&lt;br /&gt;
* https://whycan.com/t_4149.html ESP8089 https://www.cnblogs.com/twzy/p/15160808.html&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# ls -l /usr/lib/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3&lt;br /&gt;
-rwx------    1 root     root        952596 Jan  1  1970 libdbus-1.so.3.19.13&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200&lt;br /&gt;
-rwx------    1 root     root        380643 Jan  1  1970 libnl-3.so.200.26.0&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200&lt;br /&gt;
-rwx------    1 root     root         83005 Jan  1  1970 libnl-genl-3.so.200.26.0&lt;br /&gt;
# ls -l /usr/sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root        296866 Jan  1  1970 wpa_cli&lt;br /&gt;
-rwx------    1 root     root        185953 Jan  1  1970 wpa_passphrase&lt;br /&gt;
-rwx------    1 root     root       9471254 Jan  1  1970 wpa_supplicant&lt;br /&gt;
# ls -l /sbin/ | grep 1970&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwconfig&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwgetid&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwlist&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwpriv&lt;br /&gt;
-rwx------    1 root     root         65571 Jan  1  1970 iwspy&lt;br /&gt;
# ls -l /etc/ | grep 1970&lt;br /&gt;
-rw-------    1 root     root            96 Jan  1  1970 wpa_supplicant.conf&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nginx:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep nginx&lt;br /&gt;
output/target/usr/sbin/nginx&lt;br /&gt;
output/target/etc/nginx&lt;br /&gt;
output/target/etc/nginx/win-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf&lt;br /&gt;
output/target/etc/nginx/mime.types&lt;br /&gt;
output/target/etc/nginx/koi-utf&lt;br /&gt;
output/target/etc/nginx/fastcgi_params.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf.default&lt;br /&gt;
output/target/etc/nginx/fastcgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params&lt;br /&gt;
output/target/etc/nginx/uwsgi_params.default&lt;br /&gt;
output/target/etc/nginx/mime.types.default&lt;br /&gt;
output/target/etc/nginx/fastcgi.conf.default&lt;br /&gt;
output/target/etc/nginx/nginx.conf&lt;br /&gt;
output/target/etc/nginx/uwsgi_params&lt;br /&gt;
output/target/etc/nginx/scgi_params.default&lt;br /&gt;
output/target/etc/nginx/koi-win&lt;br /&gt;
output/target/etc/init.d/S50nginx&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre&lt;br /&gt;
output/target/usr/lib/libpcre.a&lt;br /&gt;
output/target/usr/lib/libpcre.so&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcreposix.a&lt;br /&gt;
output/target/usr/lib/libpcreposix.so&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0&lt;br /&gt;
output/target/usr/lib/libpcreposix.so.0.0.7&lt;br /&gt;
&lt;br /&gt;
output/target/usr/lib/libpcrecpp.a&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0&lt;br /&gt;
output/target/usr/lib/libpcrecpp.so.0.0.2&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/ | grep libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1&lt;br /&gt;
output/target/usr/lib/libpcre.so.1.2.12&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ find output/target/usr | grep html | grep -v pcre&lt;br /&gt;
output/target/usr/html/50x.html&lt;br /&gt;
output/target/usr/html/index.html&lt;br /&gt;
&lt;br /&gt;
$ scp -r output/target/usr/sbin/nginx root@192.168.1.204:/usr/sbin/&lt;br /&gt;
$ scp output/target/usr/lib/libpcre.so.1* root@192.168.1.204:/lib/&lt;br /&gt;
libpcre.so.1                                                                                               &lt;br /&gt;
libpcre.so.1.2.12 &lt;br /&gt;
$ scp -r output/target/etc/nginx root@192.168.1.204:/etc/&lt;br /&gt;
$ scp -r output/target/etc/init.d/S50nginx  root@192.168.1.204:/etc/init.d/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== CAN ===&lt;br /&gt;
&lt;br /&gt;
CAN Gateway: https://whycan.com/t_6980.html&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/lushengchu_luis/article/details/77099239&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/a13698709128/article/details/104484467&lt;br /&gt;
&lt;br /&gt;
https://blog.csdn.net/weixin_59676688/article/details/124457092&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 摄像头 ==&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_5612.html 分享F1C100S的TVD源码，TVIN0接CVBS摄像头采集数据显示到LCD屏]&lt;br /&gt;
* [https://whycan.com/t_6902.html 站在微凉大侠的肩膀上，编写F1C100S平台的CVBS IN驱动, 也就是驱动完全找不到北的TVD模块]&lt;br /&gt;
* [https://whycan.com/t_2667.html 荔枝派zero 摄像头ov2640咸鱼使用（踩坑） 持续更新]&lt;br /&gt;
* [https://whycan.com/t_5327.html F1C200S使用OV2640拍照]&lt;br /&gt;
* [https://whycan.com/t_4056.html f1c100s的引脚怎么接csi摄像头]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quick Start ==&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
$ tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===U-Boot===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo apt-get install python-setuptools&lt;br /&gt;
$ git clone https://github.com/Lichee-Pi/u-boot.git&lt;br /&gt;
$ cd u-boot&lt;br /&gt;
# 切换到 Nano 分支&lt;br /&gt;
$ git checkout nano-v2018.01&lt;br /&gt;
&lt;br /&gt;
# 设定各项默认配置为 nano 的spiflash支持版，若不带spi-flash的板子，请换成 licheepi_nano_defconfig&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_spiflash_defconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== sunxi-tools ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git&lt;br /&gt;
$ cd sunxi-tools&lt;br /&gt;
$ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果出现：fel_lib.c:26:20: fatal error: libusb.h: No such file or directory，那需要安装libusb：&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libusb-1.0-0-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
新到的一片 F1C 设备 Nor/Nand/SD 卡 都无系统，则自动进入 fel 模式，可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式：&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 查看芯片信息&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
# 列出所有芯片的信息&lt;br /&gt;
$ sudo sunxi-fel -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此时有两种方式进行程序下载：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# 1.以 uboot file-with-spl形式进行（单次运行，测试时个人推荐）&lt;br /&gt;
$ sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin  # 请自行修改到本机地址&lt;br /&gt;
&lt;br /&gt;
# 2.烧进 spi-flash （开机自启）&lt;br /&gt;
$ sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin&lt;br /&gt;
# note: 重新烧录或重进fel模式时，请在上电时拉低SPI flash 的 CS引脚&lt;br /&gt;
&lt;br /&gt;
# 加载并执行 uboot 的 spl&lt;br /&gt;
$ sudo sunxi-fel spl [文件名]&lt;br /&gt;
&lt;br /&gt;
# 把文件内容写入内存指定地址(-p 是显示写入进度) &lt;br /&gt;
$ sudo sunxi-fel -p write [地址] [文件名]&lt;br /&gt;
&lt;br /&gt;
# 调用指定地址的函数&lt;br /&gt;
$ sudo sunxi-fel exec [地址]&lt;br /&gt;
&lt;br /&gt;
# 显示spiflash的信息&lt;br /&gt;
$ sudo sunxi-fel spiflash-info&lt;br /&gt;
&lt;br /&gt;
# 读取spiflash指定地址的数据并写入到文件&lt;br /&gt;
$ sudo sunxi-fel spiflash-read [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&lt;br /&gt;
# 写入指定文件的指定长度的内容到spiflash的指定地址&lt;br /&gt;
$ sudo sunxi-fel spiflash-write [地址] [长度] [存放数据的文件路径]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ROOTFS ===&lt;br /&gt;
&lt;br /&gt;
* http://nano.lichee.pro/build_sys/rootfs.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Buildroot ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ wget https://buildroot.org/downloads/buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ tar xvf buildroot-2020.11.2.tar.gz&lt;br /&gt;
$ cd buildroot-2017.08/&lt;br /&gt;
$ make menuconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Buildroot Quick Start]]&lt;br /&gt;
&lt;br /&gt;
.config files: https://fdvad021asfd8q.oss-cn-hangzhou.aliyuncs.com/migrate/buildroot.config&lt;br /&gt;
&lt;br /&gt;
快速添加一个 helloworld 包：http://www.chip-community.org/index.php/Startup_Program_with_Buildroot&lt;br /&gt;
&lt;br /&gt;
重 build 某个包：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-rebuild&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-dirclean&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-reinstall&lt;br /&gt;
&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-source&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-show-depends&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-extract&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-staging&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-install-target&lt;br /&gt;
$ make &amp;lt;pkg&amp;gt;-patch&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== OpenWRT ====&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2573.html openwrt into spi-flash]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ git clone -b licheepi-nano https://github.com/qinfengling/openwrt&lt;br /&gt;
cat &amp;gt; .config &amp;lt;&amp;lt; EOL&lt;br /&gt;
CONFIG_TARGET_sunxi=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9=y&lt;br /&gt;
CONFIG_TARGET_sunxi_arm9_DEVICE_suniv-f1c100s-licheepi-nano=y&lt;br /&gt;
CONFIG_DEVEL=y&lt;br /&gt;
CONFIG_BRCMFMAC_SDIO=y&lt;br /&gt;
CONFIG_BRCMFMAC_USB=y&lt;br /&gt;
CONFIG_DRIVER_11AC_SUPPORT=y&lt;br /&gt;
CONFIG_DRIVER_11N_SUPPORT=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_DEBUGFS=y&lt;br /&gt;
CONFIG_PACKAGE_MAC80211_MESH=y&lt;br /&gt;
CONFIG_PACKAGE_brcmfmac-firmware-usb=y&lt;br /&gt;
CONFIG_PACKAGE_hostapd-common=y&lt;br /&gt;
CONFIG_PACKAGE_iw=y&lt;br /&gt;
CONFIG_PACKAGE_iwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-ahci-platform=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-ata-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmfmac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-brcmutil=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-cfg80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-libphy=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mac80211=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-mmc=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-nls-base=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-of-mdio=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-rtc-sunxi=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-scsi-core=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-sun4i-emac=y&lt;br /&gt;
CONFIG_PACKAGE_kmod-usb-core=y&lt;br /&gt;
CONFIG_PACKAGE_libiwinfo=y&lt;br /&gt;
CONFIG_PACKAGE_swconfig=y&lt;br /&gt;
CONFIG_PACKAGE_wireless-regdb=y&lt;br /&gt;
CONFIG_PACKAGE_wpad-mini=y&lt;br /&gt;
CONFIG_SOFT_FLOAT=y&lt;br /&gt;
CONFIG_TARGET_OPTIONS=y&lt;br /&gt;
EOL&lt;br /&gt;
$ ./scripts/feeds update -a &amp;amp;&amp;amp; ./scripts/feeds install -a&lt;br /&gt;
$ make defconfig&lt;br /&gt;
$ make world&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* https://gitee.com/zhangheyang/openwrt&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* https://qinfengling.pro/build_openwrt_image_for_licheepi_nano.html&lt;br /&gt;
* [https://whycan.com/t_4279.html 尝试给f1c100s编译openwrt]&lt;br /&gt;
* [https://www.lotlab.org/2019/02/22/%e8%8d%94%e6%9e%9d%e6%b4%benano%e7%9a%84spi-flash%e7%b3%bb%e7%bb%9f%e7%bc%96%e8%af%91%e5%88%9b%e5%bb%ba%e5%85%a8%e8%bf%87%e7%a8%8b/ 荔枝派nano的SPI-Flash系统编译创建全过程][https://whycan.com/t_2179.html 2]&lt;br /&gt;
* [[OpenWRT_Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timezone ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
comcat@auto:~/f1c/buildroot-2020.11.2$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig&lt;br /&gt;
&lt;br /&gt;
System configurration ---&amp;gt; [ ] Install timezone info&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/timezone&lt;br /&gt;
Etc/UTC&lt;br /&gt;
&lt;br /&gt;
$ ls -l /etc/localtime&lt;br /&gt;
/etc/localtime -&amp;gt; /usr/share/zoneinfo/Etc/UTC&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deploy TF ===&lt;br /&gt;
&lt;br /&gt;
可以直接只用 TF 卡，分区时，前 3MB 留给 uboot 和 environments，第一个分区从 3MB 处开始&lt;br /&gt;
&lt;br /&gt;
'''给 U-Boot 的前 3MB:'''&lt;br /&gt;
&lt;br /&gt;
[[文件:F1c.tf.layout.png]]&lt;br /&gt;
&lt;br /&gt;
https://linux-sunxi.org/Bootable_SD_card&lt;br /&gt;
&lt;br /&gt;
需要将 uboot 写到 TF 卡 8KB 开始的位置&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ dd if=u-boot-sunxi-with-spl.bin of=/dev/sdc bs=1024 seek=8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''第一、二分区：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo fdisk /dev/sdX   # 进行分区操作&lt;br /&gt;
# 若已存分区即按 d 删除各个分区&lt;br /&gt;
# &lt;br /&gt;
# 通过 n 新建分区，第一分区16M，类型 c (W95 FAT32 LBA)，从 1MB 处 (start sector 2048) 开始，+16M；第二分区 +183M&lt;br /&gt;
# w 保存写入并退出&lt;br /&gt;
$ sudo mkfs.vfat /dev/sdX1 # 将第一分区格式化成FAT&lt;br /&gt;
$ sudo mkfs.ext4 /dev/sdX2 # 将第一分区格式化成EXT4&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''第一分区：'''&lt;br /&gt;
* boot.scr    # u-boot 使用&lt;br /&gt;
* zImage&lt;br /&gt;
* suniv-f1c100s-licheepi-nano.dtb&lt;br /&gt;
&lt;br /&gt;
'''第二分区：'''&lt;br /&gt;
* 根文件系统内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''boot.scr 之生成：'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ cat boot.cmd&lt;br /&gt;
setenv bootargs console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 rw&lt;br /&gt;
load mmc 0:1 0x80C00000 suniv-f1c100s-ltegw.dtb&lt;br /&gt;
load mmc 0:1 0x80008000 zImage&lt;br /&gt;
bootz 0x80008000 - 0x80C00000&lt;br /&gt;
$ sudo apt install u-boot-tools&lt;br /&gt;
$ mkimage -C none -A arm -T script -d boot.cmd boot.scr&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 上电启动流程 ==&lt;br /&gt;
&lt;br /&gt;
After power-up, the F1C100s starts to fetch instructions from address '''0xFFFF_0000''' which is where the '''BROM''' is located at. It's an internal integrated 32 KB ROM Chip (Boot ROM or BROM).&lt;br /&gt;
&lt;br /&gt;
The BROM split up into two parts: The first part (at 0xFFFF_0000) is the '''FEL''' mode and the second is the '''eGON.BRM''' (located at 0xFFFF_4000).&lt;br /&gt;
&lt;br /&gt;
The reset vector is located at the very begining of FEL mode: at address 0xFFFF_0000. On reset, it jumps to 0xFFFF_0028 where it loads 0xFFFF_4000 (eGON.BRM) into the program counter to be executed next.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== eGON Boot ===&lt;br /&gt;
&lt;br /&gt;
The eGON Boot ROM performs a few tasks:&lt;br /&gt;
&lt;br /&gt;
# do some [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L19 co-processor setup] ([http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0344k/Bgbciiaf.html c15], (virtual) System Control Coprocessor).&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L23 disables] the WatchDog Timer&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L28 setups] CPU, AXI, AHB and APB0 clocks&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L34 enables] AHB Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L38 enables] APB0 Gating&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L40 sets] the Stack Pointer to 32K&lt;br /&gt;
# then it [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L41 jumps] to [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L84 'boot'] which immediately [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L86 jumps to] [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot]&lt;br /&gt;
# [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2551 check_uboot] setups up some registers, then [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L2560 checks the status pin] (often called FEL pin, BSP pin or '''uboot''')&lt;br /&gt;
## if the pin is low (connected to GND) [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L90 executes] [[FEL]] mode at 0xFFFF_0020.&lt;br /&gt;
##  If the pin is high it continues trying to boot from the following media and on failure continues to the next in order.&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L91 SD Card0] also known as [[A10/CCM#CCM_MMC0_CLK|MMC0]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L98 Internal NAND flash] also known as [[A10/CCM#CCM_NAND_CLK|NAND]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L104 SD Card2] also known as [[A10/CCM#CCM_MMC2_CLK|MMC2]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L111 SPI connected NOR flash] also known as [[A10/CCM#CCM_SPI0_CLK|SPI]]&lt;br /&gt;
### [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s##L117 If all fails], '''FEL/USBBoot''' mode is [https://github.com/hno/Allwinner-Info/blob/master/BROM/ffff4000.s#L120 executed] from 0xFFFF_0020&lt;br /&gt;
&lt;br /&gt;
As can be seen, the SoC has several ways to boot and a lot would need to go wrong or 'fail' before entering FEL/USBBoot mode. This is especially important if there is a valid header in the NAND flash. Obviously this can be abused, by corrupting the header and thus forcing failure. If no other boot options are available, then FEL mode should be the final result. As a bypass mechanism, the A10 has the so called ''Boot Select Pin (BSP)''. This pin is normally internally pulled up by a 50KΩ resistor. If the pin is pulled low to GND, the A10 will try to boot into FEL/USBBoot mode. Otherwise the above boot-order will be tried.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
boot-&amp;gt; check fel key pressed (yes)--&amp;gt; FEL mode (boot from USB OTG)&lt;br /&gt;
                          \  &lt;br /&gt;
                      (no) \&lt;br /&gt;
                            \-------&amp;gt; 1) try to boot from SMHC0 (SD card)&lt;br /&gt;
                                      2) try to boot from SMHC2 (eMMC)&lt;br /&gt;
                                      3) try to boot from SPI0 (SPI NOR Flash)&lt;br /&gt;
                                      4) FEL mode (boot from USB OTG)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  FEL mode ===&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
F1C 无 Boot Select Pin 会依次尝试 MMC0 ---&amp;gt; NAND ---&amp;gt; MMC2 ---&amp;gt; NOR，如果启动都失败，就会进入 FEL mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方参考设计是将 PC2 短接到 GND 用了个按钮标记为 BOOT，PC2 所在的 SPI0 接的是 系统 eMMC，作为个 参考，PC2  =  SPI0_MISO = SDC1-D0，短接到 GND 即可使 eMMC 失效&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 短接 flash 的 1、4 两脚，重新上电，上电后松开短接，即可重新进入 fel 模式&lt;br /&gt;
* 在启动到内核前，回车进入 uboot，执行 sf probe 0;sf erase 0 0x100000;reset 即可重新进入 fel 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FEL mode 下 PC 可用 sunxi-fei 工具通过 USB 口与 SoC 通信&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ sudo sunxi-fel ver&lt;br /&gt;
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel uboot /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&lt;br /&gt;
$ sudo sunxi-fel -p spiflash-write 0 /path/to/u-boot-sunxi-with-spl.bin # run uboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
U-Boot 下 erase flash:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
&amp;gt; sf probe 0    # init flash device&lt;br /&gt;
&amp;gt; sf erase 0 0x100000    # erase 1MB flash&lt;br /&gt;
&amp;gt; reset&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reference ===&lt;br /&gt;
&lt;br /&gt;
* http://linux-sunxi.org/FEL&lt;br /&gt;
* http://linux-sunxi.org/FEL/USBBoot&lt;br /&gt;
* http://linux-sunxi.org/BROM&lt;br /&gt;
* http://linux-sunxi.org/Sunxi-tools&lt;br /&gt;
* http://nano.lichee.pro/get_started/first_eat.html#id6&lt;br /&gt;
* [https://whycan.cn/t_717.html F1C100s入坑记录]&lt;br /&gt;
* [https://whycan.cn/t_3138.html 尝试从零构建F1C100s开发环境]&lt;br /&gt;
* https://whycan.com/t_2179.html spi-flash &amp;amp; wifi &amp;amp; usb-gad&lt;br /&gt;
* [https://whycan.com/t_6402.html &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reboot failed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# reboot&lt;br /&gt;
# Stopping network: OK&lt;br /&gt;
Saving random seed... done.&lt;br /&gt;
Stopping logging: OK&lt;br /&gt;
The system is going down NOW!&lt;br /&gt;
Sent SIGTERM to all processes&lt;br /&gt;
Sent SIGKILL to   20.550344 reboot: Restarting system&lt;br /&gt;
   21.549981 Reboot failed -- System halted&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
原因：未使能看门狗。系统 Restart 时，是利用取消喂狗来触发看门狗超时，从而引发复位。&lt;br /&gt;
&lt;br /&gt;
修正： 内核配置时，选择 &lt;br /&gt;
&lt;br /&gt;
  Device Drivers → Watchdog Timer Support  → WatchDog Timer Driver Core 和 Allwinner SoCs watchdog support&lt;br /&gt;
&lt;br /&gt;
确保如下选项打开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
CONFIG_WATCHDOG=y&lt;br /&gt;
CONFIG_WATCHDOG_CORE=y&lt;br /&gt;
CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y&lt;br /&gt;
CONFIG_SUNXI_WATCHDOG=y&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
重新编译内核即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage -j8&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
* [http://linux-sunxi.org/images/b/ba/F1C100s_Datasheet_V1.0.pdf F1C100s Datasheet 2015]&lt;br /&gt;
* [http://dl.linux-sunxi.org/F1C100/Allwinner_F1C100_datasheet_20110331.pdf F1C100 Datasheet 2011]&lt;br /&gt;
* [https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf F1C600 User Manual]&lt;br /&gt;
* [http://dl.linux-sunxi.org/H3/Allwinner_H3_Datasheet_V1.0.pdf H3 Datasheet]&lt;br /&gt;
* [https://debugdump.com/files/20171005/13/Allwinner_V3s_Datasheet_V1.0.pdf V3S datasheet] [http://linux-sunxi.org/images/2/23/Allwinner_V3s_Datasheet_V1.0.pdf V3s datasheet]&lt;br /&gt;
&lt;br /&gt;
*  http://nano.lichee.pro&lt;br /&gt;
* http://tang.lichee.pro&lt;br /&gt;
&lt;br /&gt;
* [https://elinux.org/Device_Tree_Reference Device Tree]&lt;br /&gt;
* [http://nano.lichee.pro/build_sys/devicetree.html 设备树简介]&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_6402.html 自制基于F1C100s/F1C200s的M5Pi]&lt;br /&gt;
* [https://whycan.com/t_6388.html F1C100S开发了一个项目，原始技术实现，裸奔XUI GUI框架]&lt;br /&gt;
* [[EMTC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [https://whycan.com/t_2736.html 投屏软件scrcpy在Linux上的移植]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	<entry>
		<id>http://wiki.jackslab.org/V851</id>
		<title>V851</title>
		<link rel="alternate" type="text/html" href="http://wiki.jackslab.org/V851"/>
				<updated>2026-03-10T02:42:57Z</updated>
		
		<summary type="html">&lt;p&gt;Comcat：/* FEL mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;全志科技（Allwinner）的 V851S/V851SE 是单核 Arm Cortex-A7 SoC，搭载了 RISC-V 内核、H.265/H.264 视频编码器和 0.5 TOPS NPU。专为智能 IP 摄像机设计的，支持人体检测和穿越报警等功能。&lt;br /&gt;
&lt;br /&gt;
V851S 和 V851SE 处理器均配备了 64MB DDR2 内存、USB、以太网和 SDIO 接口，比较不同的是，V851S 是专为带显示器的系统而设计，V851SE 则主要应用于传统的无头 IP 摄像机。&lt;br /&gt;
&lt;br /&gt;
https://github.com/YuzukiHD&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
* Arm Cortex-A7 CPU 内核 @ '''900 MHz'''&lt;br /&gt;
* RISC-V 内核 @ 600 MHz&lt;br /&gt;
* '''64MB''' DDR2 片上&lt;br /&gt;
* eMMC/SDHC，SPI NAND/NOR&lt;br /&gt;
* '''0.5 T'''OPS NPU，支持TensorFlow、Caffe、Tflite、Pytorch、ONNX等。&lt;br /&gt;
* H.264/H.265 编码器，高达 3840×2160 @ 20fps&lt;br /&gt;
* H.264/H.265多码流实时编码能力：5M@25fps+720p@25fps&lt;br /&gt;
* JPEG 编码器 1080p60&lt;br /&gt;
* 视频输出（仅限 V851S）&lt;br /&gt;
** 2 通道 MIPI DSI 高达 1280×720 @ 60fps&lt;br /&gt;
** TCONLCD接口&lt;br /&gt;
** i8080接口，最高800×480@60fps&lt;br /&gt;
** 串行 RGB 接口，最高 800×480 @ 60fps&lt;br /&gt;
** RGB 接口，带 DE/SYNC 模式，最高 1920×1080 @ 60fps&lt;br /&gt;
* 视频输入&lt;br /&gt;
** 最大分辨率为 2560 x 1440 的 ISP，高达 4Mbps @ 30fps&lt;br /&gt;
** 10 位并行 CSI 接口，高达 4 个 720p30&lt;br /&gt;
** 4 通道 MIPI CSI 输入或两个 2 通道 MIPI CSI 输入，速度高达 4Mbps @ 30 fps&lt;br /&gt;
* 音频&lt;br /&gt;
** DAC 支持 16 位和 20 位采样分辨率，8 kHz ~ 192 kHz DAC 采样率&lt;br /&gt;
** ADC 支持 16 位和 20 位采样分辨率，8 kHz ~ 48 kHz ADC 采样率&lt;br /&gt;
** 音频输入 – 1个差分麦克风输入 (MICIN1P/N)&lt;br /&gt;
** 音频输出 – 1个单端线路输出：(LINEOUTLP)&lt;br /&gt;
** 1个I2S/PCM 外部接口，用于连接外部功率放大器和 MIC ADC&lt;br /&gt;
** DMIC – 多达 8 个数字 PDM 麦克风，采样率从 8 kHz ~ 48 kHz&lt;br /&gt;
&lt;br /&gt;
* V851S– 带 RMII 接口的 10/100M 快速以太网&lt;br /&gt;
* V851SE– SIP 100M EPHY&lt;br /&gt;
* USB 2.0 DRD&lt;br /&gt;
* 5xTWI/I2C、4x UART、 4xSPI、6x GPIO、GPADC、11 通道 PWM&lt;br /&gt;
* AES、DES、3DES、MD5、SHA、HMAC、160 位硬件 PRNG、256 位硬件 TRNG&lt;br /&gt;
* 安全 ID (SID) – 2048 位 eFuse&lt;br /&gt;
* 封装 – QFN88、9 x 9 mm、0.35mm 孔间距&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S：'''&lt;br /&gt;
&lt;br /&gt;
* 网络 – 带 RMII 接口的 10/100 Mbps 以太网端口&lt;br /&gt;
* GPIO – 6 个端口（PA、PC、PD、PE、PF、PH）&lt;br /&gt;
* LCD 并行 RGB、串行 RGB、i8080、BT656&lt;br /&gt;
* 2 通道 MIPI DSI&lt;br /&gt;
* SPI – 4个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851S3：'''&lt;br /&gt;
* 内置 '''128MB''' 内存&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''V851SE：'''&lt;br /&gt;
&lt;br /&gt;
* 网络– SIP 100 Mbps EPHY&lt;br /&gt;
* GPIO– 5 个端口（PA、PC、PE、PF、PH）&lt;br /&gt;
* 显示– 不支持&lt;br /&gt;
* SPI– 3个 SPI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V853 为1TOPS算力，BGA，需外接DDR，不如直接上T527了&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FEL mode ==&lt;br /&gt;
&lt;br /&gt;
'''FEL''' 全称为 Factory Error Logging，是全志 SoC BootROM 中包含的低级子程序，常用于量产时通过 USB 对设备进行刷机。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上电时 V851_PIN56 (PC1) 短接到 GND 即可进入 FEL 模式&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
官方工具：https://github.com/linux-sunxi/sunxi-tools&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pinmap ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-QFN88.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 1: PD18/LCD_CLK/EPHY_25M/SPI2_CLK/TWI3_SCK/UART2_TX&lt;br /&gt;
* 2: PD19/LCD_DE/PWM9/TCON_TRIG/SPI2_MOSI/TWI3_SDA/UART2_RX&lt;br /&gt;
* 3: PD20/LCD_HSYNC/PWM10/MDC/SPI2_MISO/TWI2_SCK/UART2_RTS&lt;br /&gt;
* 4: PD21/LCD_VSYNC/MDIO/SPI2_CS0/TWI2_SDA/UART2_CTS&lt;br /&gt;
* 5: VCC33_PF&amp;amp;PD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 6: PF0/SDC0_D1/JTAG_MS/SPI0_CLK/SPI2_CLK&lt;br /&gt;
* 7: PF1/SDC0_D0/JTAG_DI/SPI0_MOSI/SPI2_MOSI&lt;br /&gt;
* 8: PF2/SDC0_CLK/UART0_TX/SPI0_MISO/SPI2_MISO&lt;br /&gt;
* 9: PF3/SDC0_CMD/JTAG_DO/SPI0_CS0/SPI2_CS0&lt;br /&gt;
*10: PF4/SDC0_D3/UART0_RX/SPI0_CS1/SPI2_CS1&lt;br /&gt;
*11: PF5/SDC0_D2/JTAG_CK&lt;br /&gt;
*12: PF6/DBG_CLK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*18: PE13/NCSI_D9/MIPI_CSI_MCLK1/UART2_RX/UART3_RX&lt;br /&gt;
*19: PE12/NCSI_D8/MIPI_CSI_MCLK0/UART2_TX/UART3_TX&lt;br /&gt;
*20: PE11/NCSI_D7/CSI_SM_VS/UART2_CTS/I2S1_MCLK/WIEGAND_D1&lt;br /&gt;
*21: PE4/NCSI_D0/RMII_TXD0/I2S1_DOUT0/PWM4/SDC1_D2/TWI3_SCK/TWI0_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*23: PE2/NCSI_HSYNC/RMII_CRS_DV/I2S1_LRCK/PWM2/SDC1_D0/UART3_CTS/TWI1_SCK&lt;br /&gt;
*24: PE7/NCSI_D3/RMII_RXER/PWM7/UART1_RX/I2S1_DOUT0/TWI4_SDA&lt;br /&gt;
*25: PE0/NCSI_PCLK/RMII_RXD1/I2S1_MCLK/PWM0/SDC1_CLK/UART3_TX/TWI3_SCK&lt;br /&gt;
*26: PE5/NCSI_D1/RMII_TXD1/PWM5/SDC1_D3/TWI3_SDA/TWI0_SDA&lt;br /&gt;
*27: PE8/NCSI_D4/MDC/PWM8/WIEGAND_D0/I2S1_DIN0/TWI1_SCK&lt;br /&gt;
*28: PE9/NCSI_D5/MDIO/PWM9/WIEGAND_D1/I2S1_LRCK/TWI1_SDA&lt;br /&gt;
*29: PE3/NCSI_VSYNC/RMII_RXD0/I2S1_DIN0/PWM3/SDC1_D1/UART3_RTS/TWI1_SDA&lt;br /&gt;
*30: PE6/NCSI_D2/RMII_TXEN/PWM6/UART1_TX/TWI4_SCK&lt;br /&gt;
*31: PE1/NCSI_MCLK/RMII_TXCK/I2S1_BCLK/PWM1/SDC1_CMD/UART3_RX/TWI3_SDA&lt;br /&gt;
*32: PE10/NCSI_D6/EPHY_25M/PWM10/UART2_RTS/I2S1_BCLK/WIEGAND_D0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*38: PH14/JTAG_DI/TWI3_SDA/SPI3_CS0/WIEGAND_D1/PWM7&lt;br /&gt;
*39: PH13/JTAG_DO/TWI3_SCK/SPI3_MISO/WIEGAND_D0/PWM6&lt;br /&gt;
*40: PH12/JTAG_CK/TWI2_SDA/SPI3_MOSI/CLK_FANOUT1/PWM5&lt;br /&gt;
*41: PH11/JTAG_MS/TWI2_SCK/SPI3_CLK/CLK_FANOUT0/PWM4&lt;br /&gt;
*42: PH10/PWM10/TWI3_SDA/UART0_RX&lt;br /&gt;
*43: PH9/PWM9/TWI3_SCK/UART0_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*45: PH0/PWM0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*56: PC1/SDC2_CMD/SPI0_CS0&lt;br /&gt;
*57: PC0/SDC2_CLK/SPI0_CLK&lt;br /&gt;
*58: PC3/SDC2_D1/SPI0_MISO/BOOT_SEL1&lt;br /&gt;
*59: PC2/SDC2_D2/SPI0_MOSI/BOOT_SEL0&lt;br /&gt;
*60: PC5/SDC2_D3/SPI0_HOLD/PWM5/TWI1_SDA&lt;br /&gt;
*61: PC4/SDC2_D0/SPI0_WP/PWM4/TWI1_SCK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*63: PA11/MIPIB_RX_CK0P/MIPI_CSI_MCLK1/TWI0_SDA/CLK_FANOUT1&lt;br /&gt;
*64: PA10/MIPIB_RX_CK0N/MIPI_CSI_MCLK0/TWI0_SCK/CLK_FANOUT0&lt;br /&gt;
*65: PA9/MIPIB_RX_D1P/TWI4_SDA/TWI3_SDA/PWM3/UART2_RX&lt;br /&gt;
*66: PA8/MIPIB_RX_D1N/TWI4_SCK/TWI3_SCK/PWM2/UART2_TX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*67: PA7/MIPIB_RX_D0P/TWI1_SDA/PWM1&lt;br /&gt;
*68: PA6/MIPIB_RX_D0N/TWI1_SCK/PWM0&lt;br /&gt;
&lt;br /&gt;
*69: PA5/MIPIA_RX_D0N&lt;br /&gt;
*70: PA4/MIPIA_RX_D0P&lt;br /&gt;
*71: PA3/MIPIA_RX_D1P&lt;br /&gt;
*72: PA2/MIPIA_RX_D1N&lt;br /&gt;
*73: PA1/MIPIA_RX_CK0N&lt;br /&gt;
*74: PA0/MIPIA_RX_CK0P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*80: PD1/LCD_D3/PWM0/RMII_RXD1/DSI_D0N/SPI1_CS0/DBI_CSX&lt;br /&gt;
*81: PD2/LCD_D4/PWM1/RMII_RXD0/DSI_D0P/SPI1_CLK/DBI_SCLK&lt;br /&gt;
*82: PD3/LCD_D5/PWM2/RMII_CRS_DV/DSI_D1N/SPI1_MOSI/DBI_SDO&lt;br /&gt;
*83: PD4/LCD_D6/PWM3/RMII_RXER/DSI_D1P/SPI1_MISO/DBI_SDI/DBI_TE/DBI_DCX&lt;br /&gt;
*84: PD5/LCD_D7/PWM4/RMII_TXD1/DSI_CKN/SPI1_HOLD/DBI_DCX/DBI_WRX&lt;br /&gt;
*85: PD6/LCD_D10/PWM5/RMII_TXD0/DSI_CKP/SPI1_WP/DBI_TE&lt;br /&gt;
*86: PD7/LCD_D11/PWM6/RMII_TXCK/DSI_D2N/SPI1_CS1&lt;br /&gt;
*87: PD8/LCD_D12/PWM7/RMII_TXEN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SDK ==&lt;br /&gt;
&lt;br /&gt;
* https://github.com/SoCXin/V851S/tree/master/Software/BSP&lt;br /&gt;
* https://github.com/DongshanPI/Yuzukilizard-v851s-TinaSDK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
全志在线 V853 文档：https://docs.aw-ol.com/docs/old-docs/v853/study/study_4compile/&lt;br /&gt;
&lt;br /&gt;
https://docs.aw-ol.com/docs/old-docs/v853/study/study_5flash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TF card boot ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.100ask.net/vision/docs/V851se-TinyVision/part1/QuickStart/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build Tina Linux ==&lt;br /&gt;
&lt;br /&gt;
https://dongshanpi.com/YuzukiHD-Lizard/07-TinaSDK_DevelopmentGuide/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPIO ==&lt;br /&gt;
&lt;br /&gt;
[[文件:V851S-GPIO.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
&lt;br /&gt;
* [[F1C]]&lt;br /&gt;
* [[V3S]]&lt;br /&gt;
* [[V831]]&lt;br /&gt;
* [[V851]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://forums.100ask.net/t/topic/3009&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Comcat</name></author>	</entry>

	</feed>