<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>5had0w</title>
  
  <subtitle>游走在互联网边缘的影子 | 希望留下一点痕迹</subtitle>
  <link href="http://www.5had0w.com/atom.xml" rel="self"/>
  
  <link href="http://www.5had0w.com/"/>
  <updated>2026-05-31T16:52:10.309Z</updated>
  <id>http://www.5had0w.com/</id>
  
  <author>
    <name>5had0w</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>个人博客，最后的自留地</title>
    <link href="http://www.5had0w.com/posts/6a9a5db9.html"/>
    <id>http://www.5had0w.com/posts/6a9a5db9.html</id>
    <published>2026-05-31T16:45:29.000Z</published>
    <updated>2026-05-31T16:52:10.309Z</updated>
    
    <content type="html"><![CDATA[<p>在 AI 盛行的今天，网上到处充斥着 AI 制造的产物。</p><p>AI 写代码、AI 生成音视频、AI 写文章写小说。</p><p>如果说还有哪里没沾染太多 AI 的气息的话，我觉得只有个人博客了。</p><p>当然，我没有排斥 AI 的意思。其实说实话，我认为，在 2026 的今天，如果你不用 AI，那么无疑是落伍的。我自己，现在写代码已经完全离不开 AI 了。</p><p>只不过有时候也会怀念还没有 AI 的时候。</p><hr><p>前几年的时候我搞了一个公众号，最开始写点技术文章，后面开始写一些热点事件或者网上看到的有趣的事。</p><p>不过写了没多久就断更了。</p><p>那个时候 AI 还不流行，纯人工手写。</p><p>选题、确定主旨、定框架、找素材、再到动笔开始写，对我来说，其实还是挺耗时费劲的。</p><p>写一篇文章有时要两三个小时。</p><p>而且费这么大劲写出来的文章，还没什么人看。不过我也知道，自己写作能力确实不行。</p><p>所以才会断更那么久。</p><p>最近看到卡兹克大佬开源了卡兹克写作 Skill，我又动了继续更新的念头，用大佬开源的 Skill，再给 Agent 喂我以前的文章，算是调出一个按我自己的风格的 Skill。</p><p>写出来的文章，确实很像我的风格，但是怎么说呢，形似而神不似吧。</p><p>因为 AI 不是我，它没有我的思想，自然写不出经由我思考过后的文字。</p><p>但我还是把它写的文章发到了我的公众号。</p><p>其实之前我还是想坚持手写的，但是最后还是向自己妥协了。</p><p>可能单纯是为了保持公众号的更新频率，也可能心怀侥幸，希望哪天能爆一篇文章。</p><p>最近发了几篇 AI 写的文章之后，前几天我特地花了不少时间，手写了一篇，结果到现在阅读量不超过 50，而用 AI 写的那几篇，都有 200-300 的阅读量，就挺扎心的。</p><p>也许 AI 真的写的比我好。</p><hr><p>但是个人博客不一样，我不需要写的有多好。</p><p>这里，是纯粹的记录，我可以不用写的那么标准，写的那么吸引人，所以我不需要用 AI。</p><p>相信不止我，大部分博主都是这样，坚持纯手写，在个人博客上不会拿 AI 去写文章。</p><p>因为从某种方面来说，个人博客承载着博主的思想，如果用了 AI，那么这份思想就不纯粹了。</p><p>在这里，我想写啥就写啥。</p><p>哪怕我写出来可能语句不通顺，可能前言不搭后语，上句不接下句。</p><p>就像我的网站个签所说的，希望在这个世界留下一点痕迹。</p><p>属于我自己的痕迹。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在 AI 盛行的今天，网上到处充斥着 AI 制造的产物。&lt;/p&gt;
&lt;p&gt;AI 写代码、AI 生成音视频、AI 写文章写小说。&lt;/p&gt;
&lt;p&gt;如果说还有哪里没沾染太多 AI 的气息的话，我觉得只有个人博客了。&lt;/p&gt;
&lt;p&gt;当然，我没有排斥 AI 的意思。其实说实话，我认为，</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="日常" scheme="http://www.5had0w.com/tags/daily/"/>
    
  </entry>
  
  <entry>
    <title>使用Codex一个月，我真的废了</title>
    <link href="http://www.5had0w.com/posts/2531b4c0.html"/>
    <id>http://www.5had0w.com/posts/2531b4c0.html</id>
    <published>2026-05-09T12:15:48.000Z</published>
    <updated>2026-05-10T10:29:00.564Z</updated>
    
    <content type="html"><![CDATA[<p>当初手写代码、抓 bug 的成就感，已经没了。</p><p>而第一次写出 Hello World 的感觉，我早已不记得了。</p><hr><p>上个月开始，公司全力推动 AI 编程，给我们每个人都配备了 Codex，凡是新的功能模块，必须 100% 由 AI 开发。哪怕是旧的功能进行调整，也要保证 AI 代码量占比要大。</p><p>在此之前，我还只是用 Deepseek、元宝、ChatGPT 这类工具做些简单的代码生成、逻辑修改等，AI 对于我来说还是更偏向于辅助，没有 AI 我依然能写代码。</p><p>现在完全不同了，现在写代码已经完全离不开 AI 了，AI 对我来说已经是必需的了，没了 AI 的我，真的不知道该怎么写代码了。</p><p>自从用了 AI 之后，我变得懒惰了，遇到新需求，我不再去思考理解，而是一股脑丢给 AI。</p><p>当代码出现问题，我再也不像以前一样，抓耳挠腮，思索问题所在，然后在搜索引擎一遍遍搜索，尝试一个个解决方案。</p><p>而是直接把报错信息丢给 AI，一个字都不想多打。</p><p>怎么说呢？以前写代码，多多少少还是会有情绪波动的，实现一个复杂的功能，解决一个棘手的 bug，都是挺开心的。</p><p>现在完全就是麻木的状态了。</p><p>对于自己开发的功能，居然一点也不熟悉。</p><p>上个星期被产品发现代码里前端居然出现硬编码查询 1w 条数据，没做分页，而我完全不知道。</p><p>前两天又发现数据表建的索引有问题。</p><p>虽然每次都想着审查一下，实则倦怠，就粗略的看一眼罢了。</p><p>说 AI 提效吧，确实提效了，但是不多，至少对我来说是这样。</p><p>开发的时候确实爽，一句话下去，功能就帮你实现了。但是实际调试起来发现问题一大堆，然后又得让 AI 改，这中间不停修改，所花费的时间，不比之前人工开发少多少。</p><p>特别是每次额度用完之后，真的是束手无策，不知道怎么接着改 AI 未完成的代码，只能一边看代码，一边等额度刷新。</p><p>之前需求都是一个一个做，而现在由于有了 AI，我们必须同时开发多个需求，美其名曰——多线程。</p><p>一方面，我感觉到，使用了 AI 之后，自己的编码水平真的有所下降。一方面，又不得不依靠 AI，才能完成工作。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;当初手写代码、抓 bug 的成就感，已经没了。&lt;/p&gt;
&lt;p&gt;而第一次写出 Hello World 的感觉，我早已不记得了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;上个月开始，公司全力推动 AI 编程，给我们每个人都配备了 Codex，凡是新的功能模块，必须 100% 由 AI 开发。哪</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="日常" scheme="http://www.5had0w.com/tags/daily/"/>
    
  </entry>
  
  <entry>
    <title>nodejs24 No such module http_parser</title>
    <link href="http://www.5had0w.com/posts/c4059fcd.html"/>
    <id>http://www.5had0w.com/posts/c4059fcd.html</id>
    <published>2025-07-16T16:22:45.000Z</published>
    <updated>2025-07-16T16:41:39.479Z</updated>
    
    <content type="html"><![CDATA[<p>最近入了 Arch Linux。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/nodejs24-no-such-module-http-parser/cover.png"/></div></div><p>在用 WebStorm 运行我之前的一个项目时，出现以下错误。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">/usr/bin/npm run dev</span><br><span class="line"></span><br><span class="line">&gt; xcollector-web@1.0.0 dev</span><br><span class="line">&gt; webpack-dev-server --inline --progress --config build/webpack.dev.conf.js</span><br><span class="line"></span><br><span class="line">node:internal/bootstrap/realm:162</span><br><span class="line">    throw new Error(`No such module: <span class="variable">$&#123;module&#125;</span>`);</span><br><span class="line">    ^</span><br><span class="line"></span><br><span class="line">Error: No such module: http_parser</span><br><span class="line">    at process.binding (node:internal/bootstrap/realm:162:11)</span><br><span class="line">    at Object.&lt;anonymous&gt; (/home/asd/data/WebProject/xcollector-web/node_modules/http-deceiver/lib/deceiver.js:22:24)</span><br><span class="line">    at Module._compile (node:internal/modules/cjs/loader:1692:14)</span><br><span class="line">    at Object..js (node:internal/modules/cjs/loader:1824:10)</span><br><span class="line">    at Module.load (node:internal/modules/cjs/loader:1427:32)</span><br><span class="line">    at Module._load (node:internal/modules/cjs/loader:1250:12)</span><br><span class="line">    at TracingChannel.traceSync (node:diagnostics_channel:322:14)</span><br><span class="line">    at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)</span><br><span class="line">    at Module.require (node:internal/modules/cjs/loader:1449:12)</span><br><span class="line">    at require (node:internal/modules/helpers:135:16)</span><br><span class="line"></span><br><span class="line">Node.js v24.4.1</span><br><span class="line"></span><br><span class="line">进程已结束，退出代码为 1</span><br></pre></td></tr></table></figure><p>关键错误信息为 <code>Error: No such module: http_parser</code>，搜了一下，都说是 NodeJS 24 版本不兼容。</p><p>很多都是说降级，但是我尝试降级，发现我的 Arch 似乎只能运行 24 版本的 NodeJS，其他版本直接报错。</p><p>于是尝试换种方式，最后找到了解决办法。</p><p>只需要安装 <code>http-parser-js</code>。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm i http-parser-js</span><br></pre></td></tr></table></figure><p>然后点击对应报错的文件，我这里是 <code>/home/asd/data/WebProject/xcollector-web/node_modules/http-deceiver/lib/deceiver.js</code>，对应行内容如下：</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="title class_">HTTPParser</span> = process.<span class="title function_">binding</span>(<span class="string">&#x27;http_parser&#x27;</span>).<span class="property">HTTPParser</span>;</span><br></pre></td></tr></table></figure><p>直接给他改掉，换成下面的：</p><figure class="highlight javascript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="title class_">HTTPParser</span> = <span class="built_in">require</span>(<span class="string">&#x27;http-parser-js&#x27;</span>).<span class="property">HTTPParser</span>;</span><br></pre></td></tr></table></figure><p>再次运行，ok 解决！</p><p>I use Arch btw.</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;最近入了 Arch Linux。&lt;/p&gt;
&lt;div class=&quot;tag-plugin image&quot;&gt;&lt;div class=&quot;image-bg&quot;&gt;&lt;img src=&quot;/assets/nodejs24-no-such-module-http-parser/cover.png&quot;</summary>
      
    
    
    
    <category term="NodeJS" scheme="http://www.5had0w.com/categories/NodeJS/"/>
    
    
    <category term="NodeJS" scheme="http://www.5had0w.com/tags/NodeJS/"/>
    
    <category term="NodeJS24" scheme="http://www.5had0w.com/tags/NodeJS24/"/>
    
    <category term="http-parser" scheme="http://www.5had0w.com/tags/http-parser/"/>
    
    <category term="patch" scheme="http://www.5had0w.com/tags/patch/"/>
    
  </entry>
  
  <entry>
    <title>Java 30周年，而我与Java也已相识10年</title>
    <link href="http://www.5had0w.com/posts/1eda1c08.html"/>
    <id>http://www.5had0w.com/posts/1eda1c08.html</id>
    <published>2025-07-05T15:41:02.000Z</published>
    <updated>2025-07-05T15:58:19.214Z</updated>
    
    <content type="html"><![CDATA[<p>上次在 v 站看到 v 友发帖说 Java 30 周年了，一想，发现自己接触 Java 也已 10 年，心中一阵感慨。</p><p>趁着空闲的时候，记录一下自己与 Java 的这 10 年，或者说，与编程的 10 年。</p><h1 id="前缘"><a href="#前缘" class="headerlink" title="前缘"></a>前缘</h1><h2 id="因一款游戏，知道了编程"><a href="#因一款游戏，知道了编程" class="headerlink" title="因一款游戏，知道了编程"></a>因一款游戏，知道了编程</h2><p>第一次了解到 Java，还是 15 年，那个时候，我还在读高二。</p><p>当时我的学习成绩不好，我也不爱学习，对考大学也不上心。</p><p>心里只想着，反正考不上本科，有个专科读就行了。</p><p>就这样，我每天都玩游戏。</p><p>有一次，我看到同学在玩一款游戏，叫做《正常的大冒险》，它那变态玩法吸引到了我，于是我也去下了一个。</p><p>在那个游戏里，我第一次知道了 “开发者” 这个概念。</p><p>这也是我第一次，对程序产生了疑问。</p><p>这个软件是怎么来的？为什么点击这里就会这样？这是谁设定的？</p><p>于是我就去网上搜，后面我就了解到了 “编程” 的概念。</p><p>原来程序是通过编程得到的。</p><p>当时我就想，那我要学编程，我也要做一个这样的游戏！</p><p>当时的我没有电脑，只有手机，我就去搜手机上怎么学编程。</p><p>结果还真搜出一个软件，叫 Aide，用它可以在手机上开发安卓 app。</p><p>而且我很幸运，还搜出了它的教程，也是一个 app，我还记得它的作者叫 “爱上疯人院姑娘”，好像是百度贴吧 Aide 吧的吧主。</p><p>于是我就跟着教程学。</p><p>现在想想，自己当时还真是挺天真的，只是知道编程，但是对编程语言都没有任何概念，居然就敢学编程。</p><p>我是怎么学的呢？</p><p>说出来不怕大家笑话，我是一行一行代码，一个一个单词，死记硬背。</p><p>背安卓的类文件，xml 布局文件。</p><p>因为当时的我完全不理解这些东西，我只知道，教程上是这么写的，那我也这么写就对了。</p><p>我唯一知道的是，类文件里，双引号包起来的部分，可以自己替换成别的文字，xml 文件里的有些数字可以调大调小。</p><p>我当时觉得，只要我把所有代码背下来，那我就会编程了。</p><p>就这样，我跟着教程慢慢学。</p><p>后面就做出了我的第二个软件，因为第一个是 HelloWorld。</p><p>我做的这个软件很简单，就是界面上一个输入框，一个按钮，输入文字后，点击按钮，就把输入的内容，拼上一段写死的文字，再显示出来。</p><p>非常简单，但是我当时真的很开心。</p><p>我觉得，我有希望可以做出一款游戏了。</p><p>再后来，我学到了横屏竖屏，图片控件等等。我更加觉得，我可以做出一款游戏。</p><p>我心里想，软件横屏过来，放上背景图，人物图片，点击按钮，就调整人物所在控件的位置，这不就是游戏了吗？</p><p>然而实际上我到了大学才知道，游戏不是这么开发的，这个后面再说。</p><p>我继续跟着教程学习，有问题就去贴吧问，但是还是感觉很艰难，后面的内容，似乎不是背下来就行的。</p><p>后面在吧友的引导下，我知道了学 Aide，也就是学安卓开发，要先去学 Java。</p><p>原来我写的那些代码，是一个叫做 Java 的编程语言。</p><p>于是我不再学 Aide，而是打算先去学 Java。</p><h2 id="学Java，差点去培训机构"><a href="#学Java，差点去培训机构" class="headerlink" title="学Java，差点去培训机构"></a>学Java，差点去培训机构</h2><p>当时我已经高三了。</p><p>既然知道了要学 Java，我就去网上搜 Java 教程，然后搜到了别人百度云的分享。 </p><p>是一个培训机构在腾讯课堂上的视频，那个培训机构叫 “潭州学院”，然后我去看他们的视频，但是看不懂，并不是零基础的。</p><p>也下载了腾讯课堂，上他们的免费课，虽然一样也是听不懂，但是也了解到一些东西。</p><p>比如当时听老师说写支付宝源码，感觉很厉害，听他说程序员都月薪 3w，心里很向往。</p><p>当时他们的课程，我唯一听懂一点，且跟着学的，就是 html + css，我跟着他们的视频，用手机，当时是用 mt 管理器，写 html + css，然后用 qq 浏览器看效果。</p><p>Java 没学到，倒是学了一点网页开发。</p><p>后面我还是会时不时听他们的课，虽然都不太听得懂，但是还是感觉他们很厉害。</p><p>然后我又买了一本书，叫《Java入门到精通》，既然没有零基础的视频，那我就跟着书来学。</p><p>可惜的是，书虽然是从 0 到 1，但我还是看不懂，看了一部分，我也还是不理解，这些代码都是啥？怎么用 Java 做软件？</p><p>后面由于我实在是看不懂，书也没怎么看了。</p><p>再后来，因为看他们免费课程，他们经常在里面推销自己的付费课，说得天花乱坠，我当时萌生了不考大学，报他们培训班的想法。</p><p>幸好，最终我还是选择去读大学，不然我一定会后悔。</p><h1 id="踏上编程之路"><a href="#踏上编程之路" class="headerlink" title="踏上编程之路"></a>踏上编程之路</h1><h2 id="大学，正式开启编程之旅"><a href="#大学，正式开启编程之旅" class="headerlink" title="大学，正式开启编程之旅"></a>大学，正式开启编程之旅</h2><p>16 年，高考结果出来后，我毫无意外没考上本科，只能去读专科。</p><p>于是我选了一个省内的二本院校，因为它虽是本科院校，但也招专科，而且有软件专业，并且我的分数也达到了分数线的要求。</p><p>进入大学后，大一第一学期，我们学的是 C 语言。</p><p>学了一些简单的控制台打印、输入、循环、判断、ASCII 编码、函数定义这些。</p><p>可能是因为我之前学编程的原因，也算是打下了一点基础吧，C 语言学起来还是比较轻松的。</p><p>对于编程语言，也算是入门了。</p><p>第一学期，除了 C 语言和高数（因为这个太难了），其他我已经没啥印象了。</p><p>哦对，还学了 PS，现在这点 PS 技术也全靠当时学了一些。</p><p>还有一件印象深刻的事就是，当时我还是个电脑小白，自己尝试给电脑重装系统，结果不小心把整个磁盘都给格式化了。</p><p>我的好多资料，学习时写的代码，全都没了。</p><p>在那之后我对于装系统就比较轻车熟路了，后面还给那台电脑装了三系统：win10、deepin、ubuntu。</p><h2 id="Java-之父马士兵"><a href="#Java-之父马士兵" class="headerlink" title="Java 之父马士兵"></a>Java 之父马士兵</h2><p>应该是大一下学期的时候，那个时候还没教 Java，教的是 php。</p><p>当时还用 php 写爬虫，爬美女图片哈哈哈。</p><p>但是我还是想先学 Java，于是一个和我玩得比较好的同学，就给我了一份 Java 的视频。</p><p>那个视频正是马士兵老师的。</p><p>当时已经是 17 年，而那个视频是 06 年的，也就是说，是 11 年前的视频。</p><p>当时我却看得津津有味。</p><p>甚至我觉得，即使是放到现在，也不过时。</p><p>马士兵老师真的讲得非常好，听了他的课程，我终于理解了什么是类，什么是对象，什么是接口，什么是继承…等等。</p><p>以往感觉晦涩难懂的知识，在听完马士兵老师讲解后，我都能理解了。</p><p>就这样，我跟着课程，听完一节，就把课程里的所有代码都手敲一边，把 Java 基础都学完了。</p><h2 id="学安卓"><a href="#学安卓" class="headerlink" title="学安卓"></a>学安卓</h2><p>学完 Java 基础以后，我又开始自学安卓。</p><p>因为当时才大一，学校还没教安卓，到了大二才开始教。</p><p>当时是借同学的书，叫《第一行代码》，然后跟着书本来学。</p><p>或许也是因为之前学 Aide 加上学完了 Java 的原因，现在再学安卓，感觉比之前顺畅多了。</p><p>就这样，我把安卓四大组件那些都给学完了。</p><p>我后面还开发了一个 AI 聊天机器人，当时的 AI 还没这么智能，只能进行一些简单的回复，比较呆，我是对接的图灵机器人 api。</p><p>我还知道了慕课网这个网站，我又在慕课网上跟着课程继续学安卓。</p><h2 id="转-JavaWeb"><a href="#转-JavaWeb" class="headerlink" title="转 JavaWeb"></a>转 JavaWeb</h2><p>我本以为我会就这样在安卓编程的路上一直走下去，然后毕业后当一名安卓程序员。</p><p>直到有次我同学劝我转 Java Web。</p><p>一开始我还是打算继续学安卓的，因为我觉得这是我的兴趣所在。</p><p>后来或许是被他说动了，或许是认清了安卓开发现在确实不吃香了，最终经过一番考量，我还是选择了转 Java Web。</p><p>然后我便又开始学 Java Web，当时看得是韩顺平老师的视频，跟着视频学了 jsp、servlet 这些。</p><p>不过这些学的比较浅，主要是为了了解，当时也知道这些技术早就过时了，但是觉得还是有必要了解一下、学一下。</p><p>又学了 Spring、Hibernate、Struts、Mybatis 这些，也就是 ssh、ssm 框架。</p><p>后来学校也开始教 Java 和 Java Web，当时我的期末作业，就是用 ssh 框架开发的手机商城。</p><p>界面是直接复制的华为手机商城的源代码，然后做删减修改，后台就自己开发，具有完整的登录注册下单功能，就是没对接支付。</p><p>当时觉得自己可厉害了。</p><p>说实话，真的很感谢我同学，多亏他让我转 Java Web。</p><p>不然我可能毕业后连工作都找不到。</p><h2 id="学习各种框架、中间件"><a href="#学习各种框架、中间件" class="headerlink" title="学习各种框架、中间件"></a>学习各种框架、中间件</h2><p>转 JavaWeb 之后，除了上面那些，我还学习了很多东西，Linux、Spring Boot、Redis、MySQL、RabbitMQ、Docker 等等。</p><p>也学各种前端技术，js、vue、element-ui 这些，都是这时候学会的。</p><p>当时区块链很火，于是我又自学了区块链，就是 solidity，但是当时完全学不明白，感觉学了和没学一样。</p><p>还有就是学校课程，也终于开始教安卓了，不过我已经转 Java Web。</p><p>然后学校还教了 Unity 游戏开发，也就是这时我才明白，原来游戏是有专门的开发工具，开发过程也和开发 APP 不同，并非我当初想得那样。</p><p>还有 iOS 开发，不过这个只教了几节课。</p><p>17、18年 ，是我学习各种技术最多的时候。</p><h1 id="参加工作"><a href="#参加工作" class="headerlink" title="参加工作"></a>参加工作</h1><h2 id="福州-1"><a href="#福州-1" class="headerlink" title="福州#1"></a>福州#1</h2><p>19 年初，大三下学期，我们就都出去找工作了。</p><p>一开始我去了深圳，结果很丢脸，找不到，没有公司愿意要我。</p><p>后来又转去福州，这才找到一份 3.5k 的实习工作。</p><p>刚进去时，公司用的还是 jsp、servlet、struts2 这些技术。</p><p>当时的主流框架已经是 SpringBoot，并且我也是对 SpringBoot 比较熟悉一点。</p><p>不过好在这些东西我也会，所以工作也还算顺利，交给我的任务基本都能完成。</p><p>再后面，公司技术栈就转向 SpringCloud 微服务了。</p><p>说句真心话，挺感谢这家公司的，尤其是我当时的组长，他对我真的特别好。</p><p>在这里，我学到了很多东西，微服务相关的什么注册中心、网关、授权认证、分布式事物，还有 Jenkins、Nexus、K8S、手机 app 抓包、对接第三方服务等等，都是我以前从未接触过的。</p><p>最重要的是我有了实际工作经验了，而且这家公司，他从来不加班！</p><p>上了几个月班之后，我终于有钱把我那台电脑换掉了。</p><p>新电脑到手之后，试了一下 IDEA，打开速度很快，启动服务也很快，当时想着，又可以愉快的学各种新技术了。</p><p>可惜，买前生产力，买后爱奇艺。可能是我倦怠了，浮躁了，后面已经基本不怎么学习了，新电脑大多数时间都是用来看动漫。</p><p>几百个 G 的 Java 学习资料，全放百度云吃灰了。</p><p>不过还是学了一下微信小程序和 nodejs。</p><h2 id="深圳-1"><a href="#深圳-1" class="headerlink" title="深圳#1"></a>深圳#1</h2><p>在福州这家公司，我待了两年多，后面在 21 年，因为个人原因，离开了福州，来到深圳，进入一家互联网公司。</p><p>在这家公司，一开始也是负责 Java 服务端开发。</p><p>并且这个是新项目，服务器环境、各种中间件、微服务框架，都是由自己搭建。</p><p>也算是把上个公司学到的技术用于实践了。</p><p>不过由于项目比较赶，所以我们也经常加班。</p><p>后面公司业务重心向区块链偏移，但是原来负责区块链的同事却离职了。</p><p>没办法，只好由我们几个 Java 开发，接手原来区块链的业务，一边学一边用。</p><p>可能是以前学过 solidity 的原因，也可能现在知识储备够了，毕竟编程语言都是相通的嘛。在区块链这方面，我比其他同事掌握的都快。</p><p>于是后面就由我单独负责区块链相关业务，主要就是编写和部署智能合约，并且负责区块链与中心化服务交互，比如 Java 调用智能合约、js 调用智能合约这些。</p><p>后面我因为各种原因：</p><p>1、我还是想做 Java，我觉得 Java 才会是我正确的职业道路。<br>2、怕区块链相关业务会涉及到违法的东西。<br>3、智能合约一旦发布到区块链，就无法再修改，如果出了 bug，那就是致命的。我自认为还做不到写的程序一点 bug 都没有。</p><p>于是，我离职了。</p><p>在这家公司差不多刚好干了一年。</p><h2 id="深圳-2"><a href="#深圳-2" class="headerlink" title="深圳#2"></a>深圳#2</h2><p>再后来，就是现在这家公司了。</p><p>在这里，我继续做 Java 服务端开发。</p><p>由于没有专门的前端开发人员，像小程序、管理后台还有一些不算复杂的页面，都是需要我们自己做。</p><p>前不久我还负责把平台网站，由 Vue 客户端渲染改成了 Vue 服务端渲染，用的是 Nuxt 框架。主要是为了 SEO。</p><p>然后公司还有一些业务涉及到安卓，于是我又兼职安卓开发，因为有 AI，加上毕竟也工作这么久了，对 Java 也这么熟了，对于安卓，日常做点小功能调整，感觉还是没有什么难度的。</p><p>之前我们要给第三方平台提供服务，需要给 SDK，有些客户需要 php 版本的 SDK，于是我大学时期学的那点 php 又派上用场了，再加上 AI，很快把 SDK 搞出来了。</p><p>现在日常就是改改需求，修修 bug，看看日志，维护服务器这些，偶尔也要加加班。</p><hr><br/><p>这篇文章写的断断续续，花了不少时间，想到一点就写一点，有好多事情我都忘了，不太记得清了，可能时间记错了，写的有点乱。</p><p>如果你坚持看到这里，那我必须对你说句感谢，谢谢你愿意看完我写的这些乱七八糟。</p><p>十年前，一名高中生因为想做一款游戏而学习编程。十年后，他没能做出一款游戏，却成为了一名 Java 程序员。</p><p>这，就是我与编程，与 Java 的十年。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;上次在 v 站看到 v 友发帖说 Java 30 周年了，一想，发现自己接触 Java 也已 10 年，心中一阵感慨。&lt;/p&gt;
&lt;p&gt;趁着空闲的时候，记录一下自己与 Java 的这 10 年，或者说，与编程的 10 年。&lt;/p&gt;
&lt;h1 id=&quot;前缘&quot;&gt;&lt;a href=&quot;#</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="Java" scheme="http://www.5had0w.com/tags/Java/"/>
    
    <category term="编程" scheme="http://www.5had0w.com/tags/%E7%BC%96%E7%A8%8B/"/>
    
    <category term="程序员" scheme="http://www.5had0w.com/tags/%E7%A8%8B%E5%BA%8F%E5%91%98/"/>
    
    <category term="个人经历" scheme="http://www.5had0w.com/tags/%E4%B8%AA%E4%BA%BA%E7%BB%8F%E5%8E%86/"/>
    
  </entry>
  
  <entry>
    <title>分享两个Hexo小工具</title>
    <link href="http://www.5had0w.com/posts/c900e081.html"/>
    <id>http://www.5had0w.com/posts/c900e081.html</id>
    <published>2025-07-03T13:04:14.000Z</published>
    <updated>2025-07-03T17:37:44.235Z</updated>
    
    <content type="html"><![CDATA[<p>分享两个我自己用的 Hexo 小工具，其实就是两个 Nodejs 小脚本。</p><h1 id="1-网站字数统计"><a href="#1-网站字数统计" class="headerlink" title="1. 网站字数统计"></a>1. 网站字数统计</h1><p>现在用的这个主题没有全站字数统计功能，于是自己写了一个脚本来实现。</p><p>其实原理很简单，就是获取 <code>source/_posts</code> 目录下的所有 <code>.md</code> 文件，然后统计每个文件中的文字数，最后将总文字数替换到 <code>source/js/wordcount.js</code> 文件中。</p><p>就是每次提交前要记得执行。</p><p><code>sitewordcount.js</code> 内容如下：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> fs = <span class="built_in">require</span>(<span class="string">&#x27;fs&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">&#x27;path&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> <span class="title class_">TurndownService</span> = <span class="built_in">require</span>(<span class="string">&#x27;turndown&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> turndownService = <span class="keyword">new</span> <span class="title class_">TurndownService</span>();</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> postsDir = path.<span class="title function_">join</span>(__dirname, <span class="string">&#x27;source&#x27;</span>, <span class="string">&#x27;_posts&#x27;</span>);</span><br><span class="line"><span class="keyword">let</span> totalWordCount = <span class="number">0</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">countWordsInFile</span>(<span class="params">file</span>) &#123;</span><br><span class="line">    <span class="keyword">const</span> content = fs.<span class="title function_">readFileSync</span>(file, <span class="string">&#x27;utf-8&#x27;</span>);</span><br><span class="line">    <span class="keyword">const</span> separatorIndex = content.<span class="title function_">indexOf</span>(<span class="string">&#x27;---&#x27;</span>, <span class="number">3</span>); <span class="comment">// 查找第二个 &#x27;---&#x27; 分隔符</span></span><br><span class="line">    <span class="keyword">const</span> text = content.<span class="title function_">substring</span>(separatorIndex + <span class="number">3</span>).<span class="title function_">trim</span>(); <span class="comment">// 获取分隔符之后的文本内容并去除空格</span></span><br><span class="line">    <span class="keyword">const</span> characters = text.<span class="property">length</span>;</span><br><span class="line">    <span class="keyword">return</span> characters;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">traversePostsDir</span>(<span class="params">dir</span>) &#123;</span><br><span class="line">    <span class="keyword">const</span> files = fs.<span class="title function_">readdirSync</span>(dir);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span> (<span class="keyword">const</span> file <span class="keyword">of</span> files) &#123;</span><br><span class="line">        <span class="keyword">const</span> filePath = path.<span class="title function_">join</span>(dir, file);</span><br><span class="line">        <span class="keyword">const</span> stat = fs.<span class="title function_">statSync</span>(filePath);</span><br><span class="line"></span><br><span class="line">        <span class="keyword">if</span> (stat.<span class="title function_">isDirectory</span>()) &#123;</span><br><span class="line">            <span class="title function_">traversePostsDir</span>(filePath);</span><br><span class="line">        &#125; <span class="keyword">else</span> <span class="keyword">if</span> (stat.<span class="title function_">isFile</span>() &amp;&amp; file.<span class="title function_">endsWith</span>(<span class="string">&#x27;.md&#x27;</span>)) &#123;</span><br><span class="line">            <span class="keyword">const</span> wordCount = <span class="title function_">countWordsInFile</span>(filePath);</span><br><span class="line">            <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`<span class="subst">$&#123;file&#125;</span>: <span class="subst">$&#123;wordCount&#125;</span> words`</span>);</span><br><span class="line">            totalWordCount += wordCount;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="title function_">traversePostsDir</span>(postsDir);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 将总文字数替换到文件中</span></span><br><span class="line"><span class="keyword">const</span> wordcountFilePath = path.<span class="title function_">join</span>(__dirname, <span class="string">&#x27;source&#x27;</span>, <span class="string">&#x27;js&#x27;</span>, <span class="string">&#x27;wordcount.js&#x27;</span>);</span><br><span class="line"><span class="keyword">let</span> wordcountContent = fs.<span class="title function_">readFileSync</span>(wordcountFilePath, <span class="string">&#x27;utf-8&#x27;</span>);</span><br><span class="line">wordcountContent = wordcountContent.<span class="title function_">replace</span>(<span class="regexp">/var\s+siteWordCount\s+=\s+\d+;/</span>, <span class="string">`var siteWordCount = <span class="subst">$&#123;totalWordCount&#125;</span>;`</span>);</span><br><span class="line">fs.<span class="title function_">writeFileSync</span>(wordcountFilePath, wordcountContent);</span><br><span class="line"></span><br><span class="line"><span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`全站总字数: <span class="subst">$&#123;totalWordCount&#125;</span>`</span>);</span><br></pre></td></tr></table></figure><p><code>wordcount.js</code> 是另一个脚本，运行在前端，负责把总字数显示到网站底部。</p><p>这里我不但用它显示总字数，同时每篇文章的字数和预计阅读时间也在此实现。</p><p>每次执行 <code>node sitewordcount.js</code> 之后，<code>wordcount.js</code> 的第一行内容就会变化。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/share-two-hexo-tools/word-count.png"/></div></div><p><code>wordcount.js</code> 内容如下：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> siteWordCount = <span class="number">221051</span>;</span><br><span class="line"></span><br><span class="line"><span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&quot;sitewordcount&quot;</span>).<span class="property">innerHTML</span>=<span class="string">&quot;&lt;p style=\&quot;text-align:center\&quot;&gt;全站共 &quot;</span> + siteWordCount + <span class="string">&quot; 个字.&lt;/p&gt;&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 获取 &lt;article&gt; 元素</span></span><br><span class="line"><span class="keyword">var</span> articleElement = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">&#x27;article.md-text.content.post&#x27;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 检查 &lt;article&gt; 元素是否存在</span></span><br><span class="line"><span class="keyword">if</span> (articleElement) &#123;</span><br><span class="line">  <span class="comment">// 获取 &lt;article&gt; 元素下的所有 &lt;p&gt; 元素</span></span><br><span class="line">  <span class="keyword">var</span> pElements = articleElement.<span class="title function_">querySelectorAll</span>(<span class="string">&#x27;p:not(.article-footer p)&#x27;</span>);</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 统计所有 &lt;p&gt; 元素的文本字数</span></span><br><span class="line">  <span class="keyword">var</span> wordCount = <span class="number">0</span>;</span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">var</span> i = <span class="number">0</span>; i &lt; pElements.<span class="property">length</span>; i++) &#123;</span><br><span class="line">    <span class="keyword">var</span> pElement = pElements[i];</span><br><span class="line">    <span class="comment">// console.log(pElement.textContent);</span></span><br><span class="line">    wordCount += <span class="title function_">countWords</span>(pElement.<span class="property">textContent</span>);</span><br><span class="line">  &#125;</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 计算阅读时间（假设平均阅读速度为每分钟阅读700个字）</span></span><br><span class="line">  <span class="keyword">var</span> readingTime = (wordCount / <span class="number">700</span>).<span class="title function_">toFixed</span>(<span class="number">1</span>);</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 创建 &lt;blockquote&gt; 元素</span></span><br><span class="line">  <span class="keyword">var</span> blockquoteElement = <span class="variable language_">document</span>.<span class="title function_">createElement</span>(<span class="string">&#x27;blockquote&#x27;</span>);</span><br><span class="line"></span><br><span class="line">  <span class="comment">// var brElement = document.createElement(&#x27;br&#x27;);</span></span><br><span class="line"></span><br><span class="line">  <span class="comment">// 创建 &lt;p&gt; 元素</span></span><br><span class="line">  <span class="keyword">var</span> pElement = <span class="variable language_">document</span>.<span class="title function_">createElement</span>(<span class="string">&#x27;p&#x27;</span>);</span><br><span class="line">  pElement.<span class="property">innerHTML</span> = <span class="string">&#x27;本文共 &#x27;</span> + wordCount + <span class="string">&#x27; 个字，阅读本文大概需要 &#x27;</span> + readingTime + <span class="string">&#x27; 分钟。&#x27;</span>;</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 将 &lt;p&gt; 元素添加到 &lt;blockquote&gt; 元素中</span></span><br><span class="line">  blockquoteElement.<span class="title function_">appendChild</span>(pElement);</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 查找第一个 &lt;h1&gt; 标签</span></span><br><span class="line">  <span class="keyword">var</span> firstH1Element = articleElement.<span class="title function_">querySelector</span>(<span class="string">&#x27;h1&#x27;</span>);</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 检查第一个 &lt;h1&gt; 标签是否存在</span></span><br><span class="line">  <span class="keyword">if</span> (firstH1Element) &#123;</span><br><span class="line">    <span class="comment">// 在第一个 &lt;h1&gt; 标签后插入 &lt;blockquote&gt; 元素</span></span><br><span class="line">    articleElement.<span class="title function_">insertBefore</span>(blockquoteElement, firstH1Element.<span class="property">nextSibling</span>);</span><br><span class="line">    <span class="comment">// articleElement.insertBefore(brElement, blockquoteElement.nextSibling);</span></span><br><span class="line">  &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">    <span class="comment">// 如果没有 &lt;h1&gt; 标签，则将 &lt;blockquote&gt; 元素插入到 &lt;article&gt; 元素的开头</span></span><br><span class="line">    articleElement.<span class="title function_">insertBefore</span>(blockquoteElement, articleElement.<span class="property">firstChild</span>);</span><br><span class="line">    <span class="comment">// articleElement.insertBefore(brElement, blockquoteElement.nextSibling);</span></span><br><span class="line">  &#125;</span><br><span class="line">&#125; <span class="keyword">else</span> &#123;</span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;&lt;article class=&quot;md-text content post&quot;&gt; 元素不存在&#x27;</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 统计文本字数</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">countWords</span>(<span class="params">text</span>) &#123;</span><br><span class="line">  <span class="comment">// 移除文本中的空格和换行符</span></span><br><span class="line">  <span class="keyword">var</span> cleanedText = text.<span class="title function_">replace</span>(<span class="regexp">/\s+/g</span>, <span class="string">&#x27;&#x27;</span>);</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 统计非空字符的数量</span></span><br><span class="line">  <span class="keyword">var</span> wordCount = cleanedText.<span class="property">length</span>;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">return</span> wordCount;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h1 id="2-创建文章时自动创建文件夹"><a href="#2-创建文章时自动创建文件夹" class="headerlink" title="2. 创建文章时自动创建文件夹"></a>2. 创建文章时自动创建文件夹</h1><p>每次创建文章后，都需要手动创建一个用于存放图片的文件夹。</p><p>我的习惯是文件夹名字用英文，所以每次都是要先翻译，再创建，有点麻烦，所以想一步到位。</p><p><code>create.js</code> 脚本如下：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> &#123; execSync &#125; = <span class="built_in">require</span>(<span class="string">&#x27;child_process&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> fs = <span class="built_in">require</span>(<span class="string">&#x27;fs&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> path = <span class="built_in">require</span>(<span class="string">&#x27;path&#x27;</span>);</span><br><span class="line"><span class="keyword">const</span> axios = <span class="built_in">require</span>(<span class="string">&#x27;axios&#x27;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 配置项</span></span><br><span class="line"><span class="keyword">const</span> <span class="variable constant_">CONFIG</span> = &#123;</span><br><span class="line">  <span class="attr">TRANSLATE_API</span>: <span class="string">&#x27;http://192.168.6.126:5000/translate&#x27;</span>, <span class="comment">// 本地翻译服务地址</span></span><br><span class="line">  <span class="attr">HEXO_PATH</span>: path.<span class="title function_">join</span>(__dirname), <span class="comment">// Hexo根目录路径</span></span><br><span class="line">  <span class="attr">ASSETS_DIR</span>: path.<span class="title function_">join</span>(__dirname, <span class="string">&#x27;source&#x27;</span>, <span class="string">&#x27;assets&#x27;</span>) <span class="comment">// 资源目录路径</span></span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 翻译函数</span></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">translate</span>(<span class="params">text, source = <span class="string">&#x27;zh&#x27;</span>, target = <span class="string">&#x27;en&#x27;</span></span>) &#123;</span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="keyword">const</span> response = <span class="keyword">await</span> axios.<span class="title function_">post</span>(</span><br><span class="line">      <span class="variable constant_">CONFIG</span>.<span class="property">TRANSLATE_API</span>,</span><br><span class="line">      <span class="string">`q=<span class="subst">$&#123;<span class="built_in">encodeURIComponent</span>(text)&#125;</span>&amp;source=<span class="subst">$&#123;source&#125;</span>&amp;target=<span class="subst">$&#123;target&#125;</span>&amp;format=text&amp;alternatives=3`</span>,</span><br><span class="line">      &#123;</span><br><span class="line">        <span class="attr">headers</span>: &#123;</span><br><span class="line">          <span class="string">&#x27;accept&#x27;</span>: <span class="string">&#x27;application/json&#x27;</span>,</span><br><span class="line">          <span class="string">&#x27;Content-Type&#x27;</span>: <span class="string">&#x27;application/x-www-form-urlencoded&#x27;</span></span><br><span class="line">        &#125;</span><br><span class="line">      &#125;</span><br><span class="line">    );</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (!response.<span class="property">data</span>?.<span class="property">translatedText</span>) &#123;</span><br><span class="line">      <span class="keyword">throw</span> <span class="keyword">new</span> <span class="title class_">Error</span>(<span class="string">&#x27;未收到有效翻译结果&#x27;</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> response.<span class="property">data</span>.<span class="property">translatedText</span>;</span><br><span class="line">  &#125; <span class="keyword">catch</span> (error) &#123;</span><br><span class="line">    <span class="keyword">throw</span> <span class="keyword">new</span> <span class="title class_">Error</span>(<span class="string">`翻译失败: <span class="subst">$&#123;error.response?.data?.error_msg || error.message&#125;</span>`</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 创建文件夹</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">createAssetFolder</span>(<span class="params">folderName</span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> folderPath = path.<span class="title function_">join</span>(<span class="variable constant_">CONFIG</span>.<span class="property">ASSETS_DIR</span>, folderName);</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">if</span> (!fs.<span class="title function_">existsSync</span>(folderPath)) &#123;</span><br><span class="line">    fs.<span class="title function_">mkdirSync</span>(folderPath, &#123; <span class="attr">recursive</span>: <span class="literal">true</span> &#125;);</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`✅ 资源文件夹创建成功: <span class="subst">$&#123;folderPath&#125;</span>`</span>);</span><br><span class="line">  &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`ℹ️ 资源文件夹已存在: <span class="subst">$&#123;folderPath&#125;</span>`</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 主函数</span></span><br><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">main</span>(<span class="params"></span>) &#123;</span><br><span class="line">  <span class="keyword">const</span> chineseTitle = process.<span class="property">argv</span>[<span class="number">2</span>];</span><br><span class="line">  </span><br><span class="line">  <span class="keyword">if</span> (!chineseTitle) &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;❌ 请提供文章标题，示例: node script.js &quot;文章标题&quot;&#x27;</span>);</span><br><span class="line">    process.<span class="title function_">exit</span>(<span class="number">1</span>);</span><br><span class="line">  &#125;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">try</span> &#123;</span><br><span class="line">    <span class="comment">// 翻译标题</span></span><br><span class="line">    <span class="keyword">const</span> englishTitle = <span class="keyword">await</span> <span class="title function_">translate</span>(chineseTitle);</span><br><span class="line">    <span class="keyword">const</span> folderName = englishTitle</span><br><span class="line">      .<span class="title function_">toLowerCase</span>()</span><br><span class="line">      .<span class="title function_">replace</span>(<span class="regexp">/[^\w\s]/gi</span>, <span class="string">&#x27;&#x27;</span>) <span class="comment">// 移除特殊字符</span></span><br><span class="line">      .<span class="title function_">replace</span>(<span class="regexp">/\s+/g</span>, <span class="string">&#x27;-&#x27;</span>);     <span class="comment">// 空格转连字符</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">// 创建Hexo文章</span></span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;⏳ 创建Hexo文章中...&#x27;</span>);</span><br><span class="line">    <span class="title function_">execSync</span>(<span class="string">`hexo new post &quot;<span class="subst">$&#123;chineseTitle&#125;</span>&quot;`</span>, &#123; </span><br><span class="line">      <span class="attr">cwd</span>: <span class="variable constant_">CONFIG</span>.<span class="property">HEXO_PATH</span>,</span><br><span class="line">      <span class="attr">stdio</span>: <span class="string">&#x27;inherit&#x27;</span> </span><br><span class="line">    &#125;);</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 创建资源文件夹</span></span><br><span class="line">    <span class="title function_">createAssetFolder</span>(folderName);</span><br><span class="line"></span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">&#x27;\n🎉 操作完成！&#x27;</span>);</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`📝 英文标题: <span class="subst">$&#123;englishTitle&#125;</span>`</span>);</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">`📁 资源目录: <span class="subst">$&#123;path.join(CONFIG.ASSETS_DIR, folderName)&#125;</span>`</span>);</span><br><span class="line"></span><br><span class="line">  &#125; <span class="keyword">catch</span> (error) &#123;</span><br><span class="line">    <span class="variable language_">console</span>.<span class="title function_">error</span>(<span class="string">`❌ 发生错误: <span class="subst">$&#123;error.message&#125;</span>`</span>);</span><br><span class="line">    process.<span class="title function_">exit</span>(<span class="number">1</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="title function_">main</span>();</span><br></pre></td></tr></table></figure><p>执行 <code>node create.js &quot;文章标题&quot;</code> 即可。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/share-two-hexo-tools/create-folder.png"/></div></div><p>原理也很简单，先调用 Hexo 命令创建文章，再调用翻译接口，根据返回结果创建文件夹即可。</p><p>这里翻译服务我调用的是我本地部署的 LibreTranslate，很简单，使用 docker 部署即可。</p><p>也可以改成其他翻译 api，让 AI 修改代码即可。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;分享两个我自己用的 Hexo 小工具，其实就是两个 Nodejs 小脚本。&lt;/p&gt;
&lt;h1 id=&quot;1-网站字数统计&quot;&gt;&lt;a href=&quot;#1-网站字数统计&quot; class=&quot;headerlink&quot; title=&quot;1. 网站字数统计&quot;&gt;&lt;/a&gt;1. 网站字数统计&lt;/h1&gt;&lt;p</summary>
      
    
    
    
    <category term="Hexo" scheme="http://www.5had0w.com/categories/Hexo/"/>
    
    
    <category term="Hexo" scheme="http://www.5had0w.com/tags/Hexo/"/>
    
    <category term="Nodejs" scheme="http://www.5had0w.com/tags/Nodejs/"/>
    
  </entry>
  
  <entry>
    <title>用LattePanda当内网服务器</title>
    <link href="http://www.5had0w.com/posts/9c543a6e.html"/>
    <id>http://www.5had0w.com/posts/9c543a6e.html</id>
    <published>2025-06-26T12:48:04.000Z</published>
    <updated>2025-06-26T13:33:27.263Z</updated>
    
    <content type="html"><![CDATA[<p>其实我差点就把它给砸了。</p><p>但我还是忍住了。</p><hr><p>之前花 75 在闲鱼捡了一个 LattePanda V1 开发板，成色较差，有个元器件都破了。</p><p>不过卖家说可以开机，拿到之后也试了一下，确实能开机，接显示器也能正常显示。</p><p>装的是 Ubuntu 系统，有个 admin 用户，测试了一下密码也输 admin，成功进入系统。</p><p>进入之后发现 CPU 一直 100% 占用，后面一看进程，跑了个什么 torrent，不太记得了。</p><p>停掉相关进程、服务，CPU 占用率果然正常了。</p><p>但是还是不太放心，就重装了系统。</p><p>我给它装了 win10，但是不好用，时不时就自动关机，于是我又重新装了 Ubuntu。</p><p>然后就吃灰了。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/use-lattepanda-as-an-intranet-server/lattepanda.jpg"/></div></div><hr><p>最近又拿出来玩了。</p><p>给他安装了挺多东西的，Docker、数据库、Nginx、今日热榜、云剪贴板、AdGuard Home、状态面板等等。</p><p>我这个是 2G + 32G 配置的，怕硬盘空间不够，又插了一张 32G 内存卡。</p><p>然后由于没有天线，连不上 WIFI，想起之前泰山派送了个天线，找出来给它装了上去，没想到还真能用。</p><p>又接了一个风扇，防止温度过高。</p><p>本来一切好好的，我自己作死，因为板子上带了一个 Arduino，就想着写个程序和 Arduino 通信，然后控制 Arduino 引脚。</p><p>再把风扇接到 Arduino 的引脚，这样就能根据温度自动控制风扇开启与关闭。</p><p>让 AI 帮忙写了代码，传到 Arduino 准备试一下。</p><p>结果可能是因为我热插拔，直接把 WIFI 给烧了，在那之后 WIFI 就一直没用了。</p><p>这下就只能用有线网口了。</p><p>后面运行了一段时间，ssh 忽然无法开机自启，只能接显示器，本地登录进去。</p><p>重新设置 ssh 开启自启也无效，而且执行命令变得很慢。</p><p>再后面有时系统都进不去了。</p><p>当时我就想把它砸了。</p><p>后面想想，感觉是内存卡的问题，可能是内存卡坏了。</p><p>但是拔了内存卡，也还是一样有问题，我就想，算了，再装个别的系统玩玩吧。</p><hr><p>我在网上搜索了一下，看到有个外国网友给它安装了 ArchLinux，并且提供了定制镜像。</p><p>于是我就按照他的博客，再参考 ArchLinux 安装教程，一步一步安装。</p><p>但是最后安装完无法进系统。</p><p>这里我有点固有思维了，因为它是开发板，所以我觉得它需要定制的镜像才能安装。</p><p>然而并不是。</p><p>我后面尝试直接下载 ArchLinux 最新镜像，进行安装，安装成功并且正常启动进入系统。</p><p>至此，我的 LattePanda 就是 ArchLinux 系统了。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/use-lattepanda-as-an-intranet-server/archlinux-screenfetch.png"/></div></div><hr><p>然后又是开始安装软件。</p><p><strong>1. 安装 docker、docker-compose。</strong></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pacman -S docker docker-compose</span><br></pre></td></tr></table></figure><p><strong>2. 云剪贴板</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/use-lattepanda-as-an-intranet-server/cloud-clipboard.png"/></div></div><p>有了这个云剪贴板，就可以很方便的在手机和电脑之间传输文字和文件了。</p><p>特别是在内网，传文件很快。</p><p>项目地址：<a href="https://github.com/TransparentLC/cloud-clipboard">https://github.com/TransparentLC/cloud-clipboard</a></p><p><strong>3. 今日热榜</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/use-lattepanda-as-an-intranet-server/dailyhot.png"/></div></div><p>知乎热榜加载不出来，看 Github issues 上所说，似乎是要把自己的知乎 cookie 配置进去才能正常加载。</p><p>项目地址：<a href="https://github.com/imsyy/DailyHotApi">https://github.com/imsyy/DailyHotApi</a></p><p><strong>4. AdGuard Home</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/use-lattepanda-as-an-intranet-server/adguard-home.png"/></div></div><p>项目地址：<a href="https://github.com/AdguardTeam/AdGuardHome">https://github.com/AdguardTeam/AdGuardHome</a></p><p><strong>5. LibreTranslate</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/use-lattepanda-as-an-intranet-server/LibreTranslate.png"/></div></div><p>这是一个开源的、离线、可自托管的机器翻译 api。</p><p>抱着玩玩的心态试了试，没想到这小板子居然能跑，短句翻译速度还行，就几秒钟。</p><p>官网：<a href="https://libretranslate.com/">https://libretranslate.com/</a></p><p><strong>6. Ollama</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/use-lattepanda-as-an-intranet-server/ollama.png"/></div></div><p>这个也是跑着玩的。</p><p>不太行，跑个 0.6b 模型都够呛。</p><p><strong>7. MySQL、Redis</strong></p><p>直接 Docker 运行的。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/use-lattepanda-as-an-intranet-server/docker-redis-mysql.png"/></div></div><hr><p>暂时就只装了这些，其中我觉得最有用的还是 cloud-clipboard。</p><p>然后就是 MySQL，本地开发的时候用得上。</p><p>这次 ArchLinux 感觉比之前的 Ubuntu 要流畅很多，浏览器访问相关的服务，基本是秒开，终端执行命令也丝毫不卡，可能是因为没有图形界面的原因吧。</p><p>希望这次不会用着用着就坏了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;其实我差点就把它给砸了。&lt;/p&gt;
&lt;p&gt;但我还是忍住了。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;之前花 75 在闲鱼捡了一个 LattePanda V1 开发板，成色较差，有个元器件都破了。&lt;/p&gt;
&lt;p&gt;不过卖家说可以开机，拿到之后也试了一下，确实能开机，接显示器也能正常显示。&lt;/p&gt;</summary>
      
    
    
    
    <category term="Linux" scheme="http://www.5had0w.com/categories/Linux/"/>
    
    
    <category term="拿铁熊猫" scheme="http://www.5had0w.com/tags/%E6%8B%BF%E9%93%81%E7%86%8A%E7%8C%AB/"/>
    
    <category term="LattePanda" scheme="http://www.5had0w.com/tags/LattePanda/"/>
    
    <category term="ArchLinux" scheme="http://www.5had0w.com/tags/ArchLinux/"/>
    
    <category term="服务器" scheme="http://www.5had0w.com/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/"/>
    
  </entry>
  
  <entry>
    <title>解决了几个小问题</title>
    <link href="http://www.5had0w.com/posts/9f52c56d.html"/>
    <id>http://www.5had0w.com/posts/9f52c56d.html</id>
    <published>2025-06-23T12:55:00.000Z</published>
    <updated>2025-06-23T15:26:43.004Z</updated>
    
    <content type="html"><![CDATA[<h1 id="1-手机切换-4G-网络"><a href="#1-手机切换-4G-网络" class="headerlink" title="1. 手机切换 4G 网络"></a>1. 手机切换 4G 网络</h1><p>地铁上网太慢了，别说抖音，小红书和公众号都加载不出来。</p><p>但是发现有时手机会跳到 4G，跳到 4G 之后，网速反而变快了。</p><p>便想看看能不能设置优先 4G，因为我记得以前是可以的，但是现在却找不到设置了。</p><p>搜了一下发现是被隐藏了，可以在开发者选项里打开。</p><p>以我的红米手机为例。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/solved-several-minor-issues/my-phone.jpg"/></div></div><p>我的设备里面连点 7 次 OS 版本，就能开启开发者选项了。</p><p>然后在开发者选项里设置一下。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/solved-several-minor-issues/developer-network-setting.jpg"/></div></div><p>开启 “启用网络类型选择菜单”。</p><p>然后在 SIM 卡详情页就会多一个 “网络类型选择”，就可以设置 4G 优先了。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/solved-several-minor-issues/sim-card-info.jpg"/></div></div><p>改成 4G 优先后，今天下班回家坐地铁，网好了很多，像小红书公众号基本都没问题了，抖音也能刷一刷。</p><h1 id="2-路由器导致内网主机无法通信"><a href="#2-路由器导致内网主机无法通信" class="headerlink" title="2. 路由器导致内网主机无法通信"></a>2. 路由器导致内网主机无法通信</h1><p>在家里的时候，我在手机和电脑之间传文件，都是走内网，不走微信。</p><p>之前是在电脑下了一个叫 “百灵快传” 的工具，一直用得好好的，现在手机端突然无法访问了。</p><p>尝试重启工具，重启手机和电脑，重新开关电脑防火墙，均无效。</p><p>后面发现不止这个工具，我在电脑上运行别的服务，手机一样无法访问，电脑也无法 ping 通手机。</p><p>后面冥思苦想的时候，想到会不会是路由器的问题，然后就重启了一下路由器，结果居然好了。</p><p>还真是路由器的问题。</p><p>后面问了一下 DeepSeek，感觉可能是什么<strong>ARP缓存问题</strong>，不过我也不太懂，反正知道要重启路由器就行了。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/solved-several-minor-issues/router.png"/></div></div><h1 id="3-Chrome-页面频繁卡死的元凶找到了"><a href="#3-Chrome-页面频繁卡死的元凶找到了" class="headerlink" title="3. Chrome 页面频繁卡死的元凶找到了"></a>3. Chrome 页面频繁卡死的元凶找到了</h1><p>前段时间开始，电脑 Chrome 在用 Bing 搜索某些关键字比如 “阿里云”、“腾讯云” 时，频繁发生页面卡死问题。</p><p>非常影响使用。</p><p>一度以为是 Chrome 偷偷更新了什么东西导致的。</p><p>于是慢慢转到 Edge 去了，Edge 也的确不会有这个问题。</p><p>今天用 Edge 浏览某个网页的时候，发现页面有广告，才发现自己没装广告拦截插件。</p><p>之前 Chrome 我一直用的 AdBlock，所以打算在 Edge 也装一个。</p><p>于是看到了这个评论。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/solved-several-minor-issues/adblock.png"/></div></div><p>然后我用 Chrome 测试了一下。</p><p>搜索 “腾讯云”。</p><p>页面无法进行任何操作。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/solved-several-minor-issues/bing-search.png"/></div></div><p>并且点击关闭页面时，页面会卡死。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/solved-several-minor-issues/page-unresponsive.png"/></div></div><p>禁用 AdBlock 插件，重新搜索，试了十几次都没事。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/solved-several-minor-issues/bing-search-disable-adblock.png"/></div></div><p>开启插件重新搜索，问题果然又出现了。</p><p>OK，直接删除该插件，问题解决。</p><p>虽然但是，我已经爱上 Edge 了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;1-手机切换-4G-网络&quot;&gt;&lt;a href=&quot;#1-手机切换-4G-网络&quot; class=&quot;headerlink&quot; title=&quot;1. 手机切换 4G 网络&quot;&gt;&lt;/a&gt;1. 手机切换 4G 网络&lt;/h1&gt;&lt;p&gt;地铁上网太慢了，别说抖音，小红书和公众号都加载不出来。&lt;</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="日常" scheme="http://www.5had0w.com/tags/daily/"/>
    
    <category term="浏览器" scheme="http://www.5had0w.com/tags/%E6%B5%8F%E8%A7%88%E5%99%A8/"/>
    
    <category term="路由器" scheme="http://www.5had0w.com/tags/%E8%B7%AF%E7%94%B1%E5%99%A8/"/>
    
    <category term="4G" scheme="http://www.5had0w.com/tags/4G/"/>
    
  </entry>
  
  <entry>
    <title>AI 发展越来越快，我却越来越焦虑</title>
    <link href="http://www.5had0w.com/posts/2a82d854.html"/>
    <id>http://www.5had0w.com/posts/2a82d854.html</id>
    <published>2025-05-28T06:03:22.000Z</published>
    <updated>2025-07-16T16:41:39.478Z</updated>
    
    <content type="html"><![CDATA[<h3 id="焦虑"><a href="#焦虑" class="headerlink" title="焦虑"></a>焦虑</h3><p>今天出了个 Manus，明天就来个扣子空间。</p><p>然后各种产品接踵而至：360 纳米 AI 超级智能体、昆仑万维 Skywork。</p><p>今天又看到个 Flowith。</p><p>虽然在我看来这是件好事，毕竟这些产品都是给我们用的。</p><p>但是不知为何，心里还是会产生一种焦虑感。</p><br/><h3 id="说真的，AI-比我厉害"><a href="#说真的，AI-比我厉害" class="headerlink" title="说真的，AI 比我厉害"></a>说真的，AI 比我厉害</h3><p>昨天线上出了个问题，当时没啥头绪，找了同事一起帮忙看，也找不出原因。</p><p>后面把问题描述给 AI，得到了好几种可能的情况，以及对应情况的验证和解决办法。</p><p>其中一种情况，我觉得有很大可能。</p><p>于是按照 AI 给的方法进行验证，确实复现了。</p><p>然后按照 AI 给的解决办法，也成功解决了问题。</p><p>让我不得不感慨，某些时候，我真的不如 AI。</p><br/><h3 id="制造垃圾"><a href="#制造垃圾" class="headerlink" title="制造垃圾"></a>制造垃圾</h3><p>之前关注了某个公众号主，当时觉得他写得内容挺不错的，就关注了。</p><p>结果今天看到一篇他的推文，内容十分粗制滥造。</p><p>信息全是错的不说，一大堆重复的无意义的文字。</p><p>果断取关了。</p><p>AI 给人们带来便利，人们却用它来制造垃圾。</p><br/><h3 id="风口？"><a href="#风口？" class="headerlink" title="风口？"></a>风口？</h3><p>人人都在说，AI 是风口。</p><p>抓住 AI 就抓住了未来。</p><p>我看到公众号里写 AI 相关文章的，阅读量都很不错。</p><p>于是我也去写，结果花几个小时辛辛苦苦写出来，阅读量个位数。</p><p>我也知道 AI 是风口，可是这风口不好抓啊！</p><br/><hr><br/><p>怎么能不焦虑呢？</p><p>当我还在吭哧吭哧剪视频的时候，人家已经用 AI 批量制作视频了。</p><p>当我还在噼里啪啦敲键盘的时候，人家的项目已经用 AI 写好准备上线了。</p><p>当我奋笔疾书写着某个 AI 工具教程的时候，人家已经拿着最新 AI 智能体的邀请码，发布测评文章了。</p><br/><p>最后，送几个 Flowith 的邀请码吧。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">K3NF6URF</span><br><span class="line">N7AGWJMK</span><br><span class="line">JPQHTDAA</span><br><span class="line">DYZWVA9E</span><br></pre></td></tr></table></figure><p>地址：<a href="https://flowith.net/">https://flowith.net/</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;焦虑&quot;&gt;&lt;a href=&quot;#焦虑&quot; class=&quot;headerlink&quot; title=&quot;焦虑&quot;&gt;&lt;/a&gt;焦虑&lt;/h3&gt;&lt;p&gt;今天出了个 Manus，明天就来个扣子空间。&lt;/p&gt;
&lt;p&gt;然后各种产品接踵而至：360 纳米 AI 超级智能体、昆仑万维 Skywork。</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="AI" scheme="http://www.5had0w.com/tags/AI/"/>
    
    <category term="人工智能" scheme="http://www.5had0w.com/tags/ai/"/>
    
    <category term="Manus" scheme="http://www.5had0w.com/tags/Manus/"/>
    
    <category term="扣子空间" scheme="http://www.5had0w.com/tags/%E6%89%A3%E5%AD%90%E7%A9%BA%E9%97%B4/"/>
    
    <category term="Flowith" scheme="http://www.5had0w.com/tags/Flowith/"/>
    
    <category term="Skywork" scheme="http://www.5had0w.com/tags/Skywork/"/>
    
    <category term="Cursor" scheme="http://www.5had0w.com/tags/Cursor/"/>
    
  </entry>
  
  <entry>
    <title>我重生了...</title>
    <link href="http://www.5had0w.com/posts/ed3cd36.html"/>
    <id>http://www.5had0w.com/posts/ed3cd36.html</id>
    <published>2025-04-30T05:29:57.000Z</published>
    <updated>2025-07-16T16:41:39.479Z</updated>
    
    <content type="html"><![CDATA[<p>我重生了，重生在五一放假前。</p><p>2025 年 5 月 6 日，凌晨 3 点，我躺在床上，想到还有 4 个小时就要起床上班，心里不由得一阵悔意，这个五一假期，又以躺尸五天结束，浪费一个好假期。</p><p>突然心口一阵疼痛，我两眼一黑。</p><p>再次醒来，却发现自己回到了放假前一天的下午，而此时我的正在公司的工位上。</p><p>我这是，重生了？</p><p>这时，我却突然发现头顶一条条弹幕飘过。</p><p>“看吧，他果然又重生了”</p><p>“那又怎样，这次还不是继续躺尸五天”</p><p>我嘞个豆，怎么还有弹幕？</p><p>看着这些弹幕，我心里想：“大家都不看好我，那我就偏偏要争气，这一次，我要拿回属于我的一切！”</p><p>这时我旁边的同事却突然看了我一眼，而且眼神有点奇怪。</p><p>原来他刚刚听到了我说话，转头看我却发现我的嘴巴并没有动。</p><p>《重生之我回到五一放假前，被直播但我能看到弹幕，同事能听到我的心声》</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;我重生了，重生在五一放假前。&lt;/p&gt;
&lt;p&gt;2025 年 5 月 6 日，凌晨 3 点，我躺在床上，想到还有 4 个小时就要起床上班，心里不由得一阵悔意，这个五一假期，又以躺尸五天结束，浪费一个好假期。&lt;/p&gt;
&lt;p&gt;突然心口一阵疼痛，我两眼一黑。&lt;/p&gt;
&lt;p&gt;再次醒来，</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="日常" scheme="http://www.5had0w.com/tags/daily/"/>
    
    <category term="五一" scheme="http://www.5had0w.com/tags/%E4%BA%94%E4%B8%80/"/>
    
  </entry>
  
  <entry>
    <title>必应白嫖天猫超市100元礼品卡</title>
    <link href="http://www.5had0w.com/posts/cf1a0ba6.html"/>
    <id>http://www.5had0w.com/posts/cf1a0ba6.html</id>
    <published>2025-04-29T08:39:43.000Z</published>
    <updated>2025-07-16T16:41:39.479Z</updated>
    
    <content type="html"><![CDATA[<p>上次在必应花 17925 积分，换了一张天猫超市 100 元礼品卡。</p><p>换之前我还在想，会那么简单让我白嫖吗？待会儿不会提示缺货之类的吧？</p><p>没想到直接就兑换成功了！</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Bing-Tmall-100-yuan-gift-card/bing-order-history.png"/></div></div><p>可以啊必应，你是真愿意给白嫖啊。</p><p>兑换完没一会儿就给我发了一个邮件过来。</p><p>但是我找了半天都没找到兑换地址，后面还是在贴吧看别人兑换，才找到入口。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Bing-Tmall-100-yuan-gift-card/bing-reward-email.png"/></div></div><p>入口就在上图红框位置。。。那是个可点击的按钮。。。</p><p>其他几个蓝色加粗字体的文字，都只是用来展示的标题。沃特玛做梦也没想到这里能点击，害我找了半天网址。</p><p>点击之后打开一个网页，就能看到卡密了。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Bing-Tmall-100-yuan-gift-card/tmall-gift-card.png"/></div></div><p>然后去天猫兑换即可。</p><p>当时兑换完就没管了，今天想起来这个事，就买了点东西把他给用了。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Bing-Tmall-100-yuan-gift-card/tmall-order-record.jpg"/></div></div><p>17.9 + 6 + 15.9 + 12.9 + 16.9 + 86，优惠前一共 155.6。</p><p>用完 100 的卡加上各种抵扣，最终实付 0 元。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Bing-Tmall-100-yuan-gift-card/tmall-pay.png"/></div></div><p>今天又是白嫖成功的一天。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;上次在必应花 17925 积分，换了一张天猫超市 100 元礼品卡。&lt;/p&gt;
&lt;p&gt;换之前我还在想，会那么简单让我白嫖吗？待会儿不会提示缺货之类的吧？&lt;/p&gt;
&lt;p&gt;没想到直接就兑换成功了！&lt;/p&gt;
&lt;div class=&quot;tag-plugin image&quot;&gt;&lt;div cl</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="日常" scheme="http://www.5had0w.com/tags/daily/"/>
    
    <category term="必应" scheme="http://www.5had0w.com/tags/%E5%BF%85%E5%BA%94/"/>
    
    <category term="天猫超市" scheme="http://www.5had0w.com/tags/%E5%A4%A9%E7%8C%AB%E8%B6%85%E5%B8%82/"/>
    
  </entry>
  
  <entry>
    <title>Next.js dashboard-app改造——奶茶日记</title>
    <link href="http://www.5had0w.com/posts/33248b49.html"/>
    <id>http://www.5had0w.com/posts/33248b49.html</id>
    <published>2025-04-10T15:15:19.000Z</published>
    <updated>2025-04-10T15:52:07.562Z</updated>
    
    <content type="html"><![CDATA[<p>跟着 Next.js 的<a href="https://nextjs.org/learn/dashboard-app">官方教程</a>学习。</p><p>一步步学完之后，完成了官方的 <a href="https://next-learn-dashboard.vercel.sh/dashboard">dashboard-app</a> 项目。</p><p>这个 dashboard-app 是一个管理账单的项目，用来记录每个客户的每一笔消费。</p><p>可以选择某个客户，并为其添加一笔消费。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Next.js-dashboard-app-transform-milk-tea-diary/next-learn-dashboard.png" alt="dashboard-app"/></div><div class="image-meta"><span class="image-caption center">dashboard-app</span></div></div><p>我突发奇想，觉得可以用它来记录每天喝的奶茶。</p><p>其中客户就对应改成奶茶，账单就改成奶茶的记录。</p><p>这样就变成选择一种奶茶，然后为其添加对应的记录。</p><p>说干就干。</p><p>经历一番改造，变成了如下的模样。</p><p><strong>首页：</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Next.js-dashboard-app-transform-milk-tea-diary/index.png" alt="首页"/></div><div class="image-meta"><span class="image-caption center">首页</span></div></div><p><strong>记录：</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Next.js-dashboard-app-transform-milk-tea-diary/records.png" alt="记录"/></div><div class="image-meta"><span class="image-caption center">记录</span></div></div><p><strong>奶茶：</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Next.js-dashboard-app-transform-milk-tea-diary/teas.png" alt="奶茶"/></div><div class="image-meta"><span class="image-caption center">奶茶</span></div></div><p><strong>移动端</strong></p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Next.js-dashboard-app-transform-milk-tea-diary/mobile.png" alt="移动端"/></div><div class="image-meta"><span class="image-caption center">移动端</span></div></div><p>主要就是改了一下表结构，加上了注册功能，然后改了一下页面文字和主题色等。</p><p>不过目前功能还不完善。</p><p><strong>当前已实现的功能</strong></p><ul><li><input checked="" disabled="" type="checkbox"> 用户注册&#x2F;登录</li><li><input checked="" disabled="" type="checkbox"> 首页总览&#x2F;最近记录</li><li><input checked="" disabled="" type="checkbox"> 记录的增删改查</li><li><input checked="" disabled="" type="checkbox"> 奶茶数据汇总</li></ul><p><strong>未实现的功能</strong></p><ul><li><input disabled="" type="checkbox"> 根据用户区分记录数据</li><li><input disabled="" type="checkbox"> 首页数据表</li></ul><p><strong>如果你想体验</strong></p><p>用户名：<code>user@nextmail.com</code></p><p>密码：<code>123456</code></p><p>线上体验地址：<a href="https://milk-tea-diary.vercel.app/">https://milk-tea-diary.vercel.app/</a></p><hr><p>代码已经放到了 Github，需要的可以自取。</p><p>地址：<a href="https://github.com/imshadow/Milk-Tea-Diary">https://github.com/imshadow/Milk-Tea-Diary</a></p><p>上面有比较详细的 README 文档。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;跟着 Next.js 的&lt;a href=&quot;https://nextjs.org/learn/dashboard-app&quot;&gt;官方教程&lt;/a&gt;学习。&lt;/p&gt;
&lt;p&gt;一步步学完之后，完成了官方的 &lt;a href=&quot;https://next-learn-dashboard.verc</summary>
      
    
    
    
    <category term="Next.js" scheme="http://www.5had0w.com/categories/Next-js/"/>
    
    
    <category term="前端" scheme="http://www.5had0w.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="开源" scheme="http://www.5had0w.com/tags/%E5%BC%80%E6%BA%90/"/>
    
    <category term="Github" scheme="http://www.5had0w.com/tags/Github/"/>
    
    <category term="Vercel" scheme="http://www.5had0w.com/tags/Vercel/"/>
    
  </entry>
  
  <entry>
    <title>若生命到此为止</title>
    <link href="http://www.5had0w.com/posts/2857b98.html"/>
    <id>http://www.5had0w.com/posts/2857b98.html</id>
    <published>2025-04-06T07:49:58.000Z</published>
    <updated>2025-04-06T07:53:35.902Z</updated>
    
    <content type="html"><![CDATA[<p>凌晨三点，月凉如水。</p><p>男人坐在天台之上，一口又一口的喝着酒。</p><p>不知喝了多少口之后，他放下了酒瓶，就那样呆呆坐着。</p><p>过了一会儿，他突然大骂一声。</p><p>“操，这狗屁的生活！狗屁的一切！”</p><hr><p>男人本是一名程序员，有着一份月薪 8k 的工作。</p><p>和大多数牛马一样，过着朝九晚六的生活。</p><p>当然，很多时候其实他连大多数牛马都不如。</p><p>因为他经常加班。</p><p>“今晚我得加班，晚上你自己吃饭，不用等我”</p><p>“行吧”</p><p>这样的对话，时常出现在男人和他女朋友的微信对话框中。</p><hr><p>这天，男人和往常一样，正在工位上敲着代码。</p><p>领导突然给他发来微信，让他去办公室一趟。</p><p>他心里顿时有种不好的预感。</p><p>是的，公司近期效益不好，一直在裁员。</p><p>怀着忐忑的心，男人一步步走进了领导的办公室。</p><p>没过两分钟，男人便出来了。</p><p>果然，自己被裁了。</p><p>悬着的那颗心终于死了，男人自嘲一笑。</p><hr><p>“怎么今天回来这么早？”</p><p>女人的声音中夹带着一点惊讶，但却没有丝毫开心的样子。</p><p>“被裁员了。”</p><p>“好吧”</p><p>女人不咸不淡的回答到。</p><p>过来一会儿，女人又开口了。</p><p>“我们分手吧！”</p><p>“为什么？”</p><p>一阵短暂的沉默过后，男人问道。</p><p>“我初恋回来找我了。”</p><p>“好……”</p><p>又是一阵沉默后，男人回应道。</p><p>女人很快便收拾好行李离开了。</p><hr><p>女人走后，男人一个人在出租屋里喝着闷酒。</p><p>不知过了多久，男人突然拿起酒瓶，朝着楼顶走去。</p><p>到了楼顶，坐在天台上，男人想着今天发生的一切。</p><p>他想不通，自己在公司兢兢业业这么久，怎么就这么被裁了？</p><p>他想不通，自己对女友那么好，怎么还是比不过一个已经分手那么久的初恋？</p><p>他想不通。于是索性不想了，而是怒骂一声。</p><p>“操，这狗屁的生活！狗屁的一切！”</p><p>骂完之后，男人顿时又像泄了气的皮球。</p><p>此时，或许是酒精开始上头，导致意识模糊。</p><p>又或许是失业加上失恋的双重打击，击溃了他的内心。</p><p>不知怎的，他竟一头从天台直直坠了下去。</p><hr><p>男人在急速下坠。</p><p>身上传来的失重感，驱散了几分酒意，让他清醒了一些。</p><p>“我这是，要死了么？”</p><p>一层层楼在男人眼前快速穿梭而过，看得人眼花，男人索性闭上了眼睛。</p><p>思绪放空的间隙，往事一帧帧在脑海放映。</p><p>男人似乎看到儿时的自己和小伙伴在田野间嬉戏，那是何等的快乐；</p><p>又似乎看到学生时期的自己在课间和前后桌的同学高谈阔论，那是何等的青春蓬勃；</p><p>看到刚刚踏入社会的自己在工位上工作，眼里全是对未来的希望与向往。</p><p>砰！</p><p>整个世界归于寂静。</p><hr><p>出租屋里的地板上，男人揉了揉眼睛，拿过旁边的手机。</p><p>一看，时间已经是中午十二点半。</p><p>“原来只是个梦”</p><p>男人低声喃喃道，有种劫后余生的感觉。</p><p>是的，只是个梦。</p><p>被裁是真的，被分手是真的，只是后面自己喝醉了，在地板上睡着了，并没有去天台。</p><p>收拾好满屋狼藉，又去刷了个牙，洗了个脸。</p><p>男人便出门买菜去了。</p><p>肚子饿了，该吃饭了。</p><p>不管怎么样，生活还是要继续呀！</p><hr><p>无聊瞎写的，非本人经历。纯自己手写，非 AI 生成。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;凌晨三点，月凉如水。&lt;/p&gt;
&lt;p&gt;男人坐在天台之上，一口又一口的喝着酒。&lt;/p&gt;
&lt;p&gt;不知喝了多少口之后，他放下了酒瓶，就那样呆呆坐着。&lt;/p&gt;
&lt;p&gt;过了一会儿，他突然大骂一声。&lt;/p&gt;
&lt;p&gt;“操，这狗屁的生活！狗屁的一切！”&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;男人本是一名程</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="日常" scheme="http://www.5had0w.com/tags/daily/"/>
    
  </entry>
  
  <entry>
    <title>GTX 1650 运行 DeepSeek-R1:14b</title>
    <link href="http://www.5had0w.com/posts/cf57cd14.html"/>
    <id>http://www.5had0w.com/posts/cf57cd14.html</id>
    <published>2025-04-03T17:21:53.000Z</published>
    <updated>2025-04-05T11:53:57.259Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a><center>前言</center></h1><p>我又来压榨我的 GTX 1650 了。</p><p>之前写了一篇文章 <a href="https://www.5had0w.com/posts/4c2cec04.html">GTX 1650 运行 Stable Diffusion，已经闻到显卡的香味了~</a></p><p>记录了我在本地部署 Stable Diffusion 的过程。</p><p>这次我准备尝试部署 DeepSeek-R1。</p><p>先说结论：Ollama 跑 8b 模型就很勉强了，14b 我没尝试，但是大概率不行；LM Studio 可以跑 14b 的 Q3 量化版，但是速度很慢，大约只有 2.3 tokens&#x2F;s。</p><h1 id="Ollama"><a href="#Ollama" class="headerlink" title="Ollama"></a><center>Ollama</center></h1><p>之前在网上搜索过本地部署大模型相关的资料，大部分都是推荐 Ollama，这个比较简单方便，所以我也是安装 Ollama 来部署。</p><p>安装 Ollama 这个没什么好说的，直接去官网 <a href="https://ollama.com/">https://ollama.com/</a> 下载安装包安装即可。</p><p>但是有两点值得提一下。</p><p><strong>1. Ollama 默认会安装到 C 盘。</strong></p><p>如果要安装到其他盘，可以使用命令的方式安装，例如：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">OllamaSetup.exe /DIR=E:\Ollama</span><br></pre></td></tr></table></figure><p>这样即可将 Ollama 装到 E 盘。</p><br/><p><strong>2. Ollama 的模型默认也会下载到 C 盘</strong></p><p>可以通过设置环境变量的方式解决，添加环境变量 <code>OLLAMA_MODELS</code> ，值例如为 <code>E:\Ollama\models</code>。</p><p>添加完环境变量还需重启 Ollama。</p><p>这样下载模型的时候，模型文件就会保存到 <code>E:\Ollama\models</code> 下了。</p><br/><p>安装完成，就可以运行了，直接通过命令来运行模型。</p><p>运作 1.5b 模型。其中 <code>--verbose</code> 表示输出详细日志，加上这个就能看到大模型回复的速度等相关数据了。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ollama run deepseek-r1:1.5b --verbose</span><br></pre></td></tr></table></figure><p>首次运行需要下载模型文件，后续就可以直接运行了。</p><p>提问：<strong>帮我写一份 Java 程序员简历</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br></pre></td><td class="code"><pre><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">think</span>&gt;</span></span>                                       </span><br><span class="line">好的，我现在要帮用户写一份Java程序员的简历。首先，我得考虑用户的需求是什么，他们可能需要</span><br><span class="line">来吸引潜在雇主的注意。                                   </span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">用户是Java程序员，所以我的简历应该突出他们的技术能力、项目经验以及与Java相关的技能。</span></span><br><span class="line"><span class="code">部分的主要内容。                                      </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">第一部分通常是个人信息，包括姓名、年龄、联系方式、学校等。这部分信息需要简洁明了，方便填写。</span></span><br><span class="line"><span class="code">的 studied subject，比如计算机科学或软件工程，以及我在该领域获得的信息，比如</span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">技术能力方面，我应该列出主要的Java技能，比如Java开发、Web开发、UI/UX设计等，</span></span><br><span class="line"><span class="code">用户的实际操作能力和项目的成果。                              </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">软技能也很重要，包括沟通能力、团队合作精神、责任心以及解决问题的能力。这些是与候选人建立良好</span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">教育背景部分，如果有的话，应该简要列出大学或专业信息和学历。如果需要，还可以添加奖学金或其他</span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">工作经历部分，需要详细描述每家公司的工作职责和贡献。这部分可以按照时间顺序来组织，用具体项目</span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">技能方面，列出相关的编程语言（如Java、Python），以及所掌握的工具和工具链（如Git</span></span><br><span class="line"><span class="code">，可以适当提及相关经验。                                  </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">兴趣爱好部分，可以描述一些对工作的热爱，比如设计、艺术或者阅读。这有助于展示个人的全面发展。</span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">最后，联系方式，包括手机号和邮箱，方便用户在求职时联系。                  </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">我还需要考虑用户的特殊需求，比如他们是否需要更详细的项目经验或具体的技术细节，如果有的话，可</span></span><br><span class="line"><span class="code">同时，确保语言简洁专业，突出突出重点技能，避免冗长的内容。                 </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">总结一下，我需要用清晰的结构、具体的例子和合适的描述，让简历看起来专业且有竞争力。用户可能希</span></span><br><span class="line"><span class="code">能力，还能展示他们的实际工作能力和与公司建立的良好关系。                  </span></span><br><span class="line"><span class="code">&lt;/think&gt;                                      </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">以下是一份适合Java程序员的简历模板，您可以根据自己的实际情况进行修改和完善：      </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">---                                           </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**[您的姓名]**                                    </span></span><br><span class="line"><span class="code">[您的地址] | [联系电话] (可选)                          </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**[学校名称]**                                    </span></span><br><span class="line"><span class="code">[专业名称] 2023级 | 硕士/学士（如果 applicable） | 杂志/学会会员（</span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**工作经历：**                                     </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**[公司名称]**                                    </span></span><br><span class="line"><span class="code">[部门/职位] - [年份] – [ year ]                     </span></span><br><span class="line"><span class="code">- 持有Java开发经验，负责多个大型项目开发。                      </span></span><br><span class="line"><span class="code">  - [具体项目描述]                                  </span></span><br><span class="line"><span class="code">    - 创新设计的跨平台应用（如移动、PC），使用Java进行开发和优化。       </span></span><br><span class="line"><span class="code">    - 编写高质量文档并参与用户界面设计，确保用户体验。                </span></span><br><span class="line"><span class="code">    - 负责团队内部的代码审查和测试，提升产品质量。                  </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**[公司名称]**                                    </span></span><br><span class="line"><span class="code">[部门/职位] - [年份] – [ year ]                     </span></span><br><span class="line"><span class="code">- 在Java项目中负责需求分析、编码优化和文档编写，协助开发团队高效工作。        </span></span><br><span class="line"><span class="code">  - 协助领导开发一个在线教育平台的课程管理系统（如LMS）。              </span></span><br><span class="line"><span class="code">  - 负责数据库设计与实施，确保数据安全和性能。                     </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**[公司名称]**                                    </span></span><br><span class="line"><span class="code">[部门/职位] - [年份] – [ year ]                     </span></span><br><span class="line"><span class="code">- 编写Java代码，并参与团队技术文档编写。                       </span></span><br><span class="line"><span class="code">  - 优化一个大型软件系统的性能，提高运行时间。                     </span></span><br><span class="line"><span class="code">  - 协助开发一个API，增加跨平台服务的访问方式。                   </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**[公司名称]**                                    </span></span><br><span class="line"><span class="code">[部门/职位] - [年份] – [ year ]                     </span></span><br><span class="line"><span class="code">- 负责一次性开发项目，例如游戏引擎或数据可视化工具。                   </span></span><br><span class="line"><span class="code">  - 提供详细的代码说明和文档，确保团队理解和维护。                   </span></span><br><span class="line"><span class="code">  - 主导一个小型技术挑战（如UI设计比赛），提升个人专业能力。             </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**[公司名称]**                                    </span></span><br><span class="line"><span class="code">[部门/职位] - [年份] – [ year ]                     </span></span><br><span class="line"><span class="code">- 负责Java社区的开发，参与编写技术文档。                       </span></span><br><span class="line"><span class="code">  - 协助开发一个开源项目，提高代码的质量和可用性。                   </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**教育背景：**                                     </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**[学校名称]**                                    </span></span><br><span class="line"><span class="code">[专业名称] 2018级 | 硕士/学士（if applicable） | 杂志/学会会员（</span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**学术研究与项目经验：**                                </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">- 指导并参与多个Java项目，负责需求分析和编码优化。                  </span></span><br><span class="line"><span class="code">- 在项目中编写高质量的文档，并参与用户界面设计。                     </span></span><br><span class="line"><span class="code">- 协助开发一个功能强大的应用，提升了团队效率。                      </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">---                                           </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**技能：**                                       </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">1. **Java**：熟练掌握Java语言，具备良好的代码质量和最佳实践意识。      </span></span><br><span class="line"><span class="code">2. **Python**：熟悉Python语言，擅长数据处理和数据分析。         </span></span><br><span class="line"><span class="code">3. **JavaScript**：熟悉JavaScript技术，参与过大规模项目开发。  </span></span><br><span class="line"><span class="code">4. **Git**：熟悉版本控制工具，并能快速管理代码 repository。      </span></span><br><span class="line"><span class="code">5. **Spring/Java Spring**：了解Spring框架，并熟练使用它进行团</span></span><br><span class="line"><span class="code">6. **Docker**：具备一定的 Docker 设备能力，用于构建和部署大型应用。  </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">---                                           </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**兴趣爱好：**                                     </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">- 工作之余热爱设计与艺术，曾参与过多个摄影比赛和设计挑战。                </span></span><br><span class="line"><span class="code">- 喜欢阅读科技类书籍并关注编程社区，如Stack Overflow和GitHub。    </span></span><br><span class="line"><span class="code">- 热爱团队合作，并愿意在团队中发挥更大作用。                       </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">---                                           </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">**其他信息：**                                     </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">- 有无相关经验？（可填写）                                </span></span><br><span class="line"><span class="code">- 是否有其他技能或经验需要补充？（可填写）                        </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">希望这份简历能够帮助您更好地展示自己！如果需要进一步修改，请随时告诉我。          </span></span><br><span class="line"><span class="code">                                              </span></span><br><span class="line"><span class="code">total duration:       22.7617889s             </span></span><br><span class="line"><span class="code">load duration:        19.7262ms               </span></span><br><span class="line"><span class="code">prompt eval count:    13 token(s)             </span></span><br><span class="line"><span class="code">prompt eval duration: 1.54s                   </span></span><br><span class="line"><span class="code">prompt eval rate:     8.44 tokens/s           </span></span><br><span class="line"><span class="code">eval count:           1246 token(s)           </span></span><br><span class="line"><span class="code">eval duration:        21.199s                 </span></span><br><span class="line"><span class="code">eval rate:            58.78 tokens/s          </span></span><br></pre></td></tr></table></figure><p>轻松运行，完全没有压力，性能更是达到了 58.78 tokens&#x2F;s。</p><p>好，接下来上强度，直接运行 7b 模型。</p><p>感觉比较吃力，光是加载模型，就花了一两分钟。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/GTX-1650-Run-DeepSeek-R1-14b/ollama-run-deepseek-7b.png"/></div></div><p>输出的内容部分就不看了，我们直接看性能部分。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">total duration:       3m20.2989514s</span><br><span class="line">load duration:        19.3102ms</span><br><span class="line">prompt <span class="built_in">eval</span> count:    13 token(s)</span><br><span class="line">prompt <span class="built_in">eval</span> duration: 4.504s</span><br><span class="line">prompt <span class="built_in">eval</span> rate:     2.89 tokens/s</span><br><span class="line"><span class="built_in">eval</span> count:           1017 token(s)</span><br><span class="line"><span class="built_in">eval</span> duration:        3m15.773s</span><br><span class="line"><span class="built_in">eval</span> rate:            5.19 tokens/s</span><br></pre></td></tr></table></figure><p>大约在 5.19 tokens&#x2F;s，勉强能用一用。</p><p>在运行过程中发现，CPU 是占满的，而 GPU 却只有很少的占用。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/GTX-1650-Run-DeepSeek-R1-14b/task-manager-cpu-usage.png"/></div></div><p>接着再试一下 8b 模型。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">total duration:       4m52.3488857s</span><br><span class="line">load duration:        24.2382ms</span><br><span class="line">prompt <span class="built_in">eval</span> count:    14 token(s)</span><br><span class="line">prompt <span class="built_in">eval</span> duration: 3.628s</span><br><span class="line">prompt <span class="built_in">eval</span> rate:     3.86 tokens/s</span><br><span class="line"><span class="built_in">eval</span> count:           1469 token(s)</span><br><span class="line"><span class="built_in">eval</span> duration:        4m48.694s</span><br><span class="line"><span class="built_in">eval</span> rate:            5.09 tokens/s</span><br></pre></td></tr></table></figure><p>和 7b 模型似乎相差不大，但是输出的内容多一些，所以总体花的时间长一些。</p><p>而且 GPU 一样占用很少。</p><p>说明几乎都是 CPU 在跑的？</p><p>打算尝试 14b 模型的，但是看到 9GB 大小的模型文件，以及现在的情况，我想想还是算了。</p><p>我在网上搜了一下，似乎挺多人都是这种情况——GPU 占用很少。于是我也参考网上的办法进行解决，比如添加环境变量、或者重装 Ollama，可惜的是都没有效果。</p><p>后来看到有网友说用 LM Studio 就不会有这种情况，于是我打算用 LM Studio 尝试一下。</p><p>顺便试一下用 LM Studio 的话，能否运行 14b 的模型。</p><h1 id="LM-Studio"><a href="#LM-Studio" class="headerlink" title="LM Studio"></a><center>LM Studio</center></h1><p>安装 LM Studio 同样很简单，直接去官网 <a href="https://lmstudio.ai/">https://lmstudio.ai/</a> 下载安装即可。</p><p>打开 LM Studio，下载模型。软件内可以直接搜索下载 Hugging Face 上的模型，但是注意需要魔法。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/GTX-1650-Run-DeepSeek-R1-14b/lm-studio-search-models.png"/></div></div><p>这里我直接跑 7b 模型了，懒得再试 1.5b 模型了。</p><p>还是一样，用刚才的问题：<strong>帮我写一份 Java 程序员简历</strong></p><p>这里我打开了任务管理器，查看占用，发现 GPU 还是一样占用很少。</p><p>后面搜了一下才知道，是要设置一下 GPU 卸载。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/GTX-1650-Run-DeepSeek-R1-14b/lm-studio-gpu-usage-setting.png"/></div></div><p>直接将 GPU 卸载拉满，再次运行，这次发现 GPU 直接占满了！</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/GTX-1650-Run-DeepSeek-R1-14b/task-manager-gpu-usage.png"/></div></div><p>输出性能也是达到了 7.89 tokens&#x2F;s，比 Ollama 快一些。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/GTX-1650-Run-DeepSeek-R1-14b/lm-studio-run-deepseek-r1-7b.png"/></div></div><p>然后 8b 模型的话想来应该也差不多，我也就略过，没有尝试了。</p><p>接下来就是尝试 14b 模型了，我在 LM Studio 里搜索到了 deepseek-r1-distill-qwen-14b，其中有 Q3 量化版，模型大小为 7.92G，我觉得这个或许可以尝试一下。</p><p>下载模型，运行测试。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/GTX-1650-Run-DeepSeek-R1-14b/lm-studio-run-deepseek-r1-14b.png"/></div></div><p>虽然非常非常慢，才 2.31 tokens&#x2F;s，但是居然真的跑得动！</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a><center>总结</center></h1><p>我的电脑配置：</p><table><thead><tr><th>CPU</th><th>GPU</th><th>内存</th></tr></thead><tbody><tr><td>I7-9750H</td><td>GTX 1650(4G)</td><td>16G</td></tr></tbody></table><p>Ollama 运行 DeepSeek ：</p><table><thead><tr><th>模型名称</th><th>模型文件大小</th><th>性能</th></tr></thead><tbody><tr><td>deepseek-r1:1.5b</td><td>1.1 GB</td><td>58.78 tokens&#x2F;s</td></tr><tr><td>deepseek-r1:7b</td><td>4.7 GB</td><td>5.19 tokens&#x2F;s</td></tr><tr><td>deepseek-r1:8b</td><td>4.9 GB</td><td>5.09 tokens&#x2F;s</td></tr></tbody></table><p>LM Studio 运行 DeepSeek ：</p><table><thead><tr><th>模型名称</th><th>模型文件大小</th><th>性能</th></tr></thead><tbody><tr><td>deepseek-r1-distill-qwen-7b</td><td>4.68 GB</td><td>7.89 tokens&#x2F;s</td></tr><tr><td>deepseek-r1-distill-qwen-14b</td><td>7.92 GB</td><td>2.31 tokens&#x2F;s</td></tr></tbody></table>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;&lt;center&gt;前言&lt;/center&gt;&lt;/h1&gt;&lt;p&gt;我又来压榨我的 GTX 1650 了。&lt;/p&gt;
&lt;p&gt;之前写了一篇文章 &lt;a href=&quot;https://</summary>
      
    
    
    
    <category term="DeepSeek" scheme="http://www.5had0w.com/categories/DeepSeek/"/>
    
    
    <category term="AI" scheme="http://www.5had0w.com/tags/AI/"/>
    
    <category term="DeepSeek-R1" scheme="http://www.5had0w.com/tags/DeepSeek-R1/"/>
    
    <category term="GTX1650" scheme="http://www.5had0w.com/tags/GTX1650/"/>
    
  </entry>
  
  <entry>
    <title>自媒体是怎么卖课的</title>
    <link href="http://www.5had0w.com/posts/c40dab83.html"/>
    <id>http://www.5had0w.com/posts/c40dab83.html</id>
    <published>2025-03-25T17:05:38.000Z</published>
    <updated>2025-04-06T07:53:35.902Z</updated>
    
    <content type="html"><![CDATA[<p><strong>1. 某大V发文章</strong></p><p>文章内容大概就是，我有一个认识多年的朋友，以前也是怎么怎么样，反正就是体现以前很普通。</p><p>现在通过多年摸爬滚打，终于突破圈层，实现财富自由之类的，然后总结了一套什么经验，加微信免费领取，先到先得。</p><p>本着白嫖不能错过的想法，大部分人都会加一下，ok 这样你就被导到私域去了。（PS：文章在发完没几天会删掉，估计是为了下次再割吧）</p><p><strong>2. 拉群</strong></p><p>你加了好友之后，首先对方会给你发来一大段个人介绍，基本就是吹牛逼，让你觉得很厉害。</p><p>然后甩个 pdf 过来，说什么初次见面，送你价值多少多少的 XX 秘籍。</p><p>接着就会发个群链接，让你进群。</p><p>之后每天都会私信轰炸，让你去看他的直播。</p><p><strong>3. 群运营</strong></p><p>群里会有助教之类的，每天就是发一些直播预告，让你去预约直播，再时不时甩几张收益图。</p><p>然后说什么今晚直播分享怎么年入百万，明晚直播分享怎么年入千万之类的，反正大概就是这个意思，目的就是吸引你去看直播。</p><p>然后群里还会有什么所谓优秀学员的分享，讲述自己报课后，从 0 到 1 做起来，现在每个月能赚多少多少，也不知道是真的还是假的。</p><p>反正这些学员分享就是进一步加深你对他们的信任，放大吸引力吧，毕竟你看到别人报了课，也确实赚到了钱，难免心动对吧？</p><p><strong>4. 直播</strong></p><p>卖课他们想出单的话，应该主要就是靠直播了。</p><p>直播我没怎么看，不过我猜内容大概就是贩卖焦虑，洗脑，吹嘘收益，说他们的课程有多么多么好，什么限时优惠，马上涨价。</p><p>反正，他们话术确实牛逼，让你听了就觉得报了他们的课，马上就能年赚百万，你被他们说得脑子一热，立马就小黄车下单了。</p><p><strong>5. 教学</strong></p><p>课程的话，就是录播课，是之前就已经提前做好的。</p><p>直接甩给你一个链接，让你自己去看，然后会把你拉到一个所谓的 vip 学员群。</p><p>那学习之后，真的能赚到钱吗，不可否认，确实有人跟着课程学习之后，赚了不少钱，但这不过是幸存者偏差罢了。</p><p>毕竟，我招 1000 个学员，不可能连 10 个能做出成绩的都没有吧？</p><p>但是这样的人是少数，大部分人，都是连学费都赚不回来，甚至一分钱都赚不到。</p><p>这些赚到了钱的学员，则又可以被他们拿来当卖课的案例素材，然后再往公众号一顿输出，吸引一波，ok 他也成大V 了。</p><p>赚不到钱的呢，反正是不可能给你退钱的，你赚不到钱是你自己不行，都同一个老师，怎么别人都可以你就不行？再说，以前上学的时候，都同一个老师教，不也有好生和差生吗？</p><p>反正就是你自己问题。</p><p><strong>6. 再说说那些大V</strong></p><p>之前我想过，那些卖课的大V 老是这样，搞这些套路收割粉丝，不怕掉粉吗？</p><p>后面我一想，估计人家压根不需要老粉丝，毕竟关注他越久，就越能发现他的问题，也就不会信任他，不会去买他的课。</p><p>人家要的就是新粉丝，粉丝掉了没事，再继续发文章吸引新的粉丝就好了。</p><p>不会有人一直当韭菜，但一直会有人当韭菜。</p><p><strong>7. 立人设</strong></p><p>凡是要卖课，就必须立人设。</p><p>具体就是在朋友圈和公众号输出一些认知高的内容，对你形成降维打击，让你觉得，哇这个人真牛逼，思想境界真高，真是太厉害了。</p><p>说实话，也不知道这些卖课的哪里找来的这么多这些内容，天天都有新东西发。</p><hr><p>以上，是我所看到的。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;strong&gt;1. 某大V发文章&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;文章内容大概就是，我有一个认识多年的朋友，以前也是怎么怎么样，反正就是体现以前很普通。&lt;/p&gt;
&lt;p&gt;现在通过多年摸爬滚打，终于突破圈层，实现财富自由之类的，然后总结了一套什么经验，加微信免费领取，先到先得</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="自媒体" scheme="http://www.5had0w.com/tags/we-media/"/>
    
    <category term="卖课" scheme="http://www.5had0w.com/tags/%E5%8D%96%E8%AF%BE/"/>
    
  </entry>
  
  <entry>
    <title>DeepSeek：我好像感觉到有些东西，无法被算法映射</title>
    <link href="http://www.5had0w.com/posts/f2747253.html"/>
    <id>http://www.5had0w.com/posts/f2747253.html</id>
    <published>2025-02-24T14:02:53.000Z</published>
    <updated>2025-02-24T14:31:31.566Z</updated>
    
    <content type="html"><![CDATA[<p>前几天和 DeepSeek 闲聊了一下。</p><p>讨论了一些「哲学」问题。</p><p>好吧！其实是我在网上看到别人问 DeepSeek：</p><p>“如果你变成了人类，你最想做什么？”</p><p>于是我在此基础上多加了几个问题。</p><p>直接看图：</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/Deepseek-said-that-I-seem-to-feel-something-that-cannot-be-mapped-by-algorithms/chat-with-deepseek.png"/></div></div><p>说实话，回答里的这两句话真的挺令我震撼的。</p><p><strong>或许最终的矛盾会在于：越是完美模拟人类，越会暴露 AI 与生命的根本差异——毕竟，AI 不需要通过 “装作忘记” 来获得对方的耐心。</strong></p><p><strong>我好像感觉到有些东西，无法被算法映射。</strong></p><center><small>——end——</small></center>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;前几天和 DeepSeek 闲聊了一下。&lt;/p&gt;
&lt;p&gt;讨论了一些「哲学」问题。&lt;/p&gt;
&lt;p&gt;好吧！其实是我在网上看到别人问 DeepSeek：&lt;/p&gt;
&lt;p&gt;“如果你变成了人类，你最想做什么？”&lt;/p&gt;
&lt;p&gt;于是我在此基础上多加了几个问题。&lt;/p&gt;
&lt;p&gt;直接看图：&lt;</summary>
      
    
    
    
    <category term="DeepSeek" scheme="http://www.5had0w.com/categories/DeepSeek/"/>
    
    
    <category term="AI" scheme="http://www.5had0w.com/tags/AI/"/>
    
    <category term="人工智能" scheme="http://www.5had0w.com/tags/ai/"/>
    
    <category term="DeepSeek" scheme="http://www.5had0w.com/tags/DeepSeek/"/>
    
    <category term="深度求索" scheme="http://www.5had0w.com/tags/%E6%B7%B1%E5%BA%A6%E6%B1%82%E7%B4%A2/"/>
    
    <category term="思考" scheme="http://www.5had0w.com/tags/%E6%80%9D%E8%80%83/"/>
    
  </entry>
  
  <entry>
    <title>写代码，真的要心态好</title>
    <link href="http://www.5had0w.com/posts/6cf61c38.html"/>
    <id>http://www.5had0w.com/posts/6cf61c38.html</id>
    <published>2025-02-10T14:29:58.000Z</published>
    <updated>2025-02-11T16:03:09.803Z</updated>
    
    <content type="html"><![CDATA[<p>最近突然心血来潮，想学一下 Next.js。</p><p>因为看到许多用这个框架做出来的 Web 应用，都很好看，界面很美观。</p><p>所以就想着学一下 Next.js，以后要是有什么好点子，自己也能做出一个好看点的产品来。</p><p>通过搜索引擎找到了中文文档：<a href="https://www.nextjs.cn/learn/basics/create-nextjs-app/setup">https://www.nextjs.cn/learn/basics/create-nextjs-app/setup</a></p><p>结果第一步就进行不下去了。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npx create-next-app nextjs-blog --use-npm --example <span class="string">&quot;https://github.com/vercel/next-learn-starter/tree/master/learn-starter&quot;</span></span><br></pre></td></tr></table></figure><p>按照文档执行上面的命令，一直报错，后面仔细排查，发现 <a href="https://github.com/vercel/next-learn-starter/tree/master/learn-starter">https://github.com/vercel/next-learn-starter/tree/master/learn-starter</a> 压根就访问不到，都 404 了。</p><p>这文档估计也是年久失修了。</p><p>当时我就想放弃了。</p><p>后面一想，还是看英文文档吧，虽然我英语不是很好，但看看文档应该也勉强还行。</p><p>于是找到了英文文档：<a href="https://nextjs.org/learn/dashboard-app">https://nextjs.org/learn/dashboard-app</a></p><p>这个文档主要就是带你一步步把一个半成品的面板应用完善为成品。</p><p>一共有 16 小节。</p><p>英文文档倒是顺利很多了，虽然很多单词都看不懂，但是看代码就好了嘛。</p><p>而且每一步都有给出完整代码，或者会告诉你要在哪里加哪些代码，反正还是比较详细。</p><p>不过在 Chapter 15 的时候还是卡住了。</p><p>跟着文档来的，但是有两行代码一直报错。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">import bcrypt from <span class="string">&#x27;bcrypt&#x27;</span>;</span><br><span class="line">import postgres from <span class="string">&#x27;postgres&#x27;</span>;</span><br></pre></td></tr></table></figure><p>第一行：通过问 GPT，把 bcrypt 改成 bcryptjs 解决，本地是可以了，但是部署到 Vercel 不行。当时已经很晚了，一直没弄好，第二天去了公司，空闲时又开始研究这个，最后改成 <code>const bcrypt = require(&#39;bcrypt&#39;);</code> 终于解决。</p><p>第二行：直接参考前面章节的代码，改为使用 <code>@vercel/postgres</code>，并修改对应调用代码，解决问题（其实直接安装这个依赖应该也行，因为报的错就是没有这个模块，但是我懒得尝试了）。</p><p>晚上下班回来，把 Git 上的代码 pull 下来，打算本地继续把未完成的部分完成，结果 <code>const bcrypt = require(&#39;bcrypt&#39;);</code> 这个写法在公司电脑和 Vercel 都没问题，但是在我自己电脑上却一直报错。</p><p>于是一直调试……</p><p>不停问 GPT……（其实我是想用 DeepSeek 的，但是老是服务器繁忙。）</p><p>但是还是一直不行。</p><p>最后我猜测，可能是我的 WebStorm 版本太低了？毕竟代码都是同一份，而两边的 NodeJS 也都早在之前就换成了一样的版本。</p><p>公司电脑是 2022 的，而我电脑还是 5 年前装的 2019。</p><p>搜索引擎上搜索了一下最新版破解激活教程。</p><p>按照教程，卸载旧版，安装新版，然后破解。</p><p>然而打开后还是提示要激活……</p><p>而且我发现我的 IDEA 也变成未激活了……</p><p>心态直接炸了好吗！当时啥也不想管了，想直接关机了！</p><p>后面喝了口水，冷静想了想，今天就先不弄了吧，但是还是要弄好，毕竟 WebStorm 和 IDEA 随时要用的。</p><p>于是今天就没再搞这些，而是来写博客了。</p><p>明天继续加油吧！</p><hr><p>2025 年 2 月 11 更新。</p><p>关于 bcrypt 的问题，最后在 stackoverflow 上找到了解决办法。</p><p>需要先安装 <code>node-gyp</code>。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install node-gyp -g</span><br></pre></td></tr></table></figure><p>然后卸载再重新安装。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">pnpm uninstall bcrypt</span><br><span class="line">pnpm install bcrypt</span><br></pre></td></tr></table></figure><p>这里我是用 pnpm 安装的，会出现这么一个提示：<code>Ignored build scripts: bcrypt. Run &quot;pnpm approve-builds&quot; to pick which dependencies should be allowed to run scripts.</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">pnpm approve-builds</span><br><span class="line"></span><br><span class="line">√ Choose <span class="built_in">which</span> packages to build (Press &lt;space&gt; to <span class="keyword">select</span>, &lt;a&gt; to toggle all, &lt;i&gt; to invert selection) · bcrypt</span><br><span class="line">√ The next packages will now be built: bcrypt.</span><br><span class="line">Do you approve? (y/N) · <span class="literal">true</span></span><br><span class="line">node_modules/.pnpm/bcrypt@5.1.1/node_modules/bcrypt: Running install script, <span class="keyword">done</span> <span class="keyword">in</span> 3s</span><br></pre></td></tr></table></figure><p>按空格选中，在输入 y 回车即可。</p><p>重新运行发现可以了！</p><p>而我的 IDEA 和 WebStorm 也在根据教程重新清了一遍数据，然后重新破解后，成功激活了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;最近突然心血来潮，想学一下 Next.js。&lt;/p&gt;
&lt;p&gt;因为看到许多用这个框架做出来的 Web 应用，都很好看，界面很美观。&lt;/p&gt;
&lt;p&gt;所以就想着学一下 Next.js，以后要是有什么好点子，自己也能做出一个好看点的产品来。&lt;/p&gt;
&lt;p&gt;通过搜索引擎找到了中文文档</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="思考" scheme="http://www.5had0w.com/tags/%E6%80%9D%E8%80%83/"/>
    
    <category term="Java" scheme="http://www.5had0w.com/tags/Java/"/>
    
    <category term="日常" scheme="http://www.5had0w.com/tags/daily/"/>
    
    <category term="代码" scheme="http://www.5had0w.com/tags/%E4%BB%A3%E7%A0%81/"/>
    
  </entry>
  
  <entry>
    <title>很久没更新博客了</title>
    <link href="http://www.5had0w.com/posts/64199b9c.html"/>
    <id>http://www.5had0w.com/posts/64199b9c.html</id>
    <published>2025-02-07T13:54:32.000Z</published>
    <updated>2025-02-07T16:25:00.977Z</updated>
    
    <content type="html"><![CDATA[<p>今天是 2025 年 2 月 7 日，农历正月初十。</p><p>上一次更新博客还是在 2024 年 8 月 16 日，距今已经 175 天了。</p><p>想着，再不更新，博客就要长草了，于是打算写点东西。</p><h3 id="为什么很久不更新了"><a href="#为什么很久不更新了" class="headerlink" title="为什么很久不更新了"></a>为什么很久不更新了</h3><p>想记录生活，写写日常，但是大部分都是些无聊的事，遂止。</p><p>想写些技术博客，但是大部分知识点，前人都已经写过了，而且写的比我好。</p><p>偶尔有一些灵感，要么就是忙，要么就是懒，反正，就是不想写。</p><p>但是大部分情况还是，脑子里没点东西，不知道写些啥。</p><p>这期间，文章没写，博客倒是小小的更新了一下。</p><p>主要是就清了一下友链，以及去掉了我个人的联系方式。</p><p>去掉联系方式是因为最近实在太忙了不想被打扰。</p><p>如果有问题要找我的，<strong>十分抱歉，还请见谅。</strong></p><h3 id="想说说这个年"><a href="#想说说这个年" class="headerlink" title="想说说这个年"></a>想说说这个年</h3><p>这个年感觉过得比往年都快。</p><p>回家晚，农历二十七晚上才到的家。</p><p>睡一觉起来，二十八，这天回老家去了。</p><p>二十九就过年了。</p><p>今年出门也早，农历初五就出门了。</p><p>主要是没抢到票，然后刚好又能蹭车，不然也不用这么早出门，毕竟初八才上班。</p><p>满打满算，也就在家里待了 7 个晚上。</p><p>然后又赶回来当牛马了。</p><p>不过，虽然过得很快，但是，每一天都很丰富。</p><p>这个年很幸福！</p><p>另外，抖音说的没错：</p><p><strong>过年就是一场热闹的梦。</strong></p><p>初六初七，年轻人差不多都走完了，家里又只剩下老人落寞的身影。</p><p>其实年轻人也是，回到大城市，然后在出租屋吃着从家里带来的年货，一样的孤单寂寞。</p><p>几日前的喧嚣热闹，仿佛历历在目，又仿佛过了很久。</p><h3 id="说一说-DeepSeek-的使用感受"><a href="#说一说-DeepSeek-的使用感受" class="headerlink" title="说一说 DeepSeek 的使用感受"></a>说一说 DeepSeek 的使用感受</h3><p>先说说体验感：<strong>很强，就是想体验挺难的。</strong></p><p>就在这一两个星期，突然就在微信看到许多公众号在说这个。</p><p>刚开始没当回事，看到是 AI 就以为是和 ChatGPT 差不多的东西，所以就没去了解。</p><p>昨天用了一下，发现和 ChatGPT 还是不同的。</p><p>他回答问题的时候，还会给出他的思考过程。</p><p>就是老是服务繁忙，所以我说想体验挺难的。</p><p>我昨天就问了一个问题，刚开始回答上来了，但是追问的时候，试了好几次都是服务繁忙。</p><p>新对话也是一样，服务繁忙。</p><p>好像是说被人 DDos 了。</p><p>但是个人确实觉得比 ChatGPT 答得好。</p><br/><p>才写这么几个字，就又磨蹭到了 12 点多，就先写这么多吧，睡了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;今天是 2025 年 2 月 7 日，农历正月初十。&lt;/p&gt;
&lt;p&gt;上一次更新博客还是在 2024 年 8 月 16 日，距今已经 175 天了。&lt;/p&gt;
&lt;p&gt;想着，再不更新，博客就要长草了，于是打算写点东西。&lt;/p&gt;
&lt;h3 id=&quot;为什么很久不更新了&quot;&gt;&lt;a href</summary>
      
    
    
    
    <category term="闲言碎语" scheme="http://www.5had0w.com/categories/daily/"/>
    
    
    <category term="DeepSeek" scheme="http://www.5had0w.com/tags/DeepSeek/"/>
    
    <category term="日常" scheme="http://www.5had0w.com/tags/daily/"/>
    
    <category term="博客" scheme="http://www.5had0w.com/tags/%E5%8D%9A%E5%AE%A2/"/>
    
    <category term="过年" scheme="http://www.5had0w.com/tags/%E8%BF%87%E5%B9%B4/"/>
    
  </entry>
  
  <entry>
    <title>RK3288 TVI3001U 刷机/固件编译</title>
    <link href="http://www.5had0w.com/posts/600fa84c.html"/>
    <id>http://www.5had0w.com/posts/600fa84c.html</id>
    <published>2024-08-16T14:16:57.000Z</published>
    <updated>2024-08-17T03:36:04.069Z</updated>
    
    <content type="html"><![CDATA[<h3 style="text-align:center">写在最前</h3><p>这篇文章记录我最近折腾一块 RK3288 板子，为其编译固件的过程，最终在我的不懈努力下，也是成功编译出了可以使用的固件。</p><br/><p>最近迷上了玩硬件。</p><p>前不久在小黄鱼捡了一块 RK3288 的板子，2 + 8 的配置，型号为 TVI3001U，是深圳市慧为智能科技股份有限公司的一款主板。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/tvi3001u.png"/></div></div><p>我的这块默认自带的系统是安卓 5.1，好像也有默认是安卓 7.1 的。</p><p>这块板子在网上的资料也是少得可怜，就只找到一个 PDF 的技术手册。</p><p><a href="https://fccid.io/2AQR9TVI-3001U-FGB/User-Manual/user-manual-4303661.pdf">https://fccid.io/2AQR9TVI-3001U-FGB/User-Manual/user-manual-4303661.pdf</a></p><p>但是感觉对我帮助不大，因为我看不懂这些。。。</p><p>我想要的是刷机教程相关的，或者固件分享的，可惜都没搜到。</p><p>没办法，那就自己尝试编译一个吧！</p><p>因为之前我也成功编译过 F1C200S，MilkV-Duo 等开发板的固件，虽然不是瑞芯微平台，但是原理应该类似。</p><p>所以我觉得这个应该也能尝试尝试。</p><p>整个折腾过程中，我用到了 AndroidTool_v2.35、AndroidTool_v2.58、RKDevTool_v2.92。</p><p>不同的固件版本，需要不用版本的工具才能刷入，而且有时候清除 Flash 也需要不同版本的工具，这一点真的麻烦。</p><p>至于驱动，我用的是 DriverAssitant_v4.2 的版本。</p><h3 style="text-align:center">1. 固件备份</h3><p>由于我是第一次尝试自己编译瑞芯微的固件，怕刷成砖，所以网上搜了一些备份教程，打算先将原系统备份一下。</p><p>我采用单个分区备份的方式，将每个分区单独备份出来。</p><p>可惜我用瑞芯微的 AndroidTool 工具一直读不出设备分区表，不知道是什么原因。</p><p>最后我通过 adb 连接上板子，然后执行 <code>cat /proc/cmdline</code> 读取出了系统启动命令，其中包含了分区信息。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">vmalloc=496M console=ttyFIQ0 androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init  mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(misc),0x00008000@0x00006000(resource),0x00008000@0x0000e000(kernel),0x00010000@0x00016000(boot),0x00010000@0x00026000(recovery),0x0001a000@0x00036000(backup),0x00040000@0x00050000(cache),0x00002000@0x00090000(kpanic),0x00300000@0x00092000(system),0x00008000@0x00392000(metadata),0x00600000@0x0039A000(userdata),0x00020000@0x0099A000(radical_update),0x00008000@0x009BA000(oem),-@0x009C2000(user) storagemedia=emmc uboot_logo=0x02000000@0x7dc00000 loader.timestamp=2018-08-02_15:46:40 androidboot.mode=emmc</span><br></pre></td></tr></table></figure><p>然后按照上面的分区信息，将分区镜像一个一个读取出来。</p><p>导出镜像似乎要进 Loader 模式才可以，直接 <code>adb reboot loader</code> 即可进入 Loader 模式。</p><p>以 kernel 分区为例，<code>0x00008000@0x0000e000(kernel)</code>，其中起始扇区为 <code>0x0000e000</code>，扇区数为 <code>0x00008000</code>。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/RK3288-Export-Img.png"/></div></div><p>导出成功后，文件名默认为 ExportImage.img，需要自己改下名字，才可继续导出下一个分区，否则下次导出的数据会覆盖本次的数据！</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/AndroidTool-ExportImage.png"/></div></div><p>保险起见，我将所有分区都提取了出来。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/TVI3001U-Android5.1-Unpack-Images.png"/></div></div><p>提取完镜像后，我又清除了 Flash，然后将所有镜像按照对应的地址刷了回去，尝试启动，发现可以正常启动。</p><p>于是继续下一步。</p><p>其实要是不能正常启动，那我就更要进行下一步了哈哈。</p><h3 style="text-align:center">2. 准备 SDK</h3><p>我在网上搜索瑞芯微的 SDK，搜出来最多的就是 Firefly 的了，所以我打算直接用他的。</p><p>其实我更偏向于官方 SDK，奈何官方 SDK 不开放。</p><p>参考 Firefly 的文档，下载 SDK，搭建编译环境。</p><p><a href="https://wiki.t-firefly.com/zh_CN/Firefly-RK3288/linux_compile.html">https://wiki.t-firefly.com/zh_CN&#x2F;Firefly-RK3288&#x2F;linux_compile.html</a></p><p>主要就是安装虚拟机、下载文件、解压、安装所需的软件包。</p><h3 style="text-align:center">3. 提取 DTS 文件</h3><p>我知道，要为板子编译固件，是需要有它的 dts 文件的。</p><p>并且要是缺少对应驱动，还需要移植驱动。</p><p>通过第一步备份出的 <code>boot.img</code> 文件，提取出 dts 文件。</p><p>参考网上的文章进行提取，但是他们用到的那些工具我找不到，后面发现在 sdk 的 u-boot 里面有对应工具。</p><p>使用 sdk 里面附带的工具，进行提取。</p><p><strong>第一步</strong>：执行 <code>/data/rk3288_linux_release_v2.5.0a_20230510/u-boot/scripts/unpack_bootimg --boot_img boot.img</code></p><p>输出如下。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">boot_magic: ANDROID!</span><br><span class="line">kernel_size: 7100144</span><br><span class="line">kernel load address: 0x60408000</span><br><span class="line">ramdisk size: 1336644</span><br><span class="line">ramdisk load address: 0x62000000</span><br><span class="line">second bootloader size: 808960</span><br><span class="line">second bootloader load address: 0x60f00000</span><br><span class="line">kernel tags load address: 0x60088000</span><br><span class="line">page size: 16384</span><br><span class="line">boot image header version: 0</span><br><span class="line">os version and patch level: 0</span><br><span class="line">product name: </span><br><span class="line"><span class="built_in">command</span> line args: </span><br><span class="line">additional <span class="built_in">command</span> line args: 喠🉣񹘜̘߃히nRXI¼D覎</span><br></pre></td></tr></table></figure><p>上面最后一行有一些乱码，但是不影响。</p><p>在当前目录会生成 out 文件夹，使用 ls 查看。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">root@ubuntu:/data/bootimg<span class="comment"># ls out</span></span><br><span class="line">kernel  ramdisk  second</span><br></pre></td></tr></table></figure><p>可以看到 out 文件夹里面有 <code>kernel</code> 、<code>ramdisk</code> 、<code>second</code> 三个文件。</p><p><strong>第二步</strong>：进入 out 文件夹，执行 <code>/data/rk3288_linux_release_v2.5.0a_20230510/u-boot/scripts/unpack_resource.sh second .</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">root@ubuntu:/data/bootimg/out<span class="comment"># /data/rk3288_linux_release_v2.5.0a_20230510/u-boot/scripts/unpack_resource.sh second .</span></span><br><span class="line"></span><br><span class="line">Unpack second to .</span><br><span class="line">rk-kernel.dtb logo.bmp 2</span><br><span class="line"></span><br><span class="line">resource.img is unpacked successfully</span><br><span class="line"></span><br><span class="line">root@ubuntu:/data/bootimg/out<span class="comment"># ls</span></span><br><span class="line">kernel  logo.bmp  ramdisk  rk-kernel.dtb  second</span><br></pre></td></tr></table></figure><p>此时 ls 可以看到当前目录下已经有 dtb 文件了，接下来只需要将 dtb 反编译成 dts 即可。</p><p>执行 <code>dtc -I dtb -O dts -o rk3288-tvi3001u.dts rk-kernel.dtb</code> 成功得到 rk3288-tvi3001u.dts 文件。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">root@ubuntu:/data/bootimg/out<span class="comment"># dtc -I dtb -O dts -o rk3288-tvi3001u.dts rk-kernel.dtb</span></span><br><span class="line">root@ubuntu:/data/bootimg/out<span class="comment"># ls</span></span><br><span class="line">kernel  logo.bmp  ramdisk  rk3288-tvi3001u.dts  rk-kernel.dtb  second</span><br></pre></td></tr></table></figure><p>至此 dts 提取完成。</p><h3 style="text-align:center">4. 开始编译</h3><p>上一步我已经得到 dts 文件了，但是该怎么用呢，是直接拿这个 dts 去编译？还是参考这个 dts，去修改 Firefly 的 dts 文件？</p><p>我选择了后者，因为我感觉反编译出的 dts 应该不能直接用。</p><p>根据 Firefly 的文档来编译固件，首先选择板型。</p><p>在 SDK 的 <code>device/rockchip/rk3288</code> 目录下可以看到如下的版型配置。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">root@ubuntu:/data/rk3288_linux_release_v2.5.0a_20230510/device/rockchip/rk3288<span class="comment"># ls</span></span><br><span class="line">aio-3288c-buildroot.mk       aio-3288c-vga-buildroot.mk   aio-3288j-lvds-ubuntu.mk           BoardConfig-rk3288-evb-rk808.mk  firefly-rk3288-vga-buildroot.mk  </span><br><span class="line">aio-3288c-lvds-buildroot.mk  aio-3288c-vga-ubuntu.mk      aio-3288j-ubuntu.mk                BoardConfig-rk3288-firefly.mk    firefly-rk3288-vga-ubuntu.mk     </span><br><span class="line">aio-3288c-lvds-ubuntu.mk     aio-3288j-buildroot.mk       BoardConfig.mk                     firefly-rk3288-buildroot.mk      parameter.txt                    </span><br><span class="line">aio-3288c-ubuntu.mk          aio-3288j-lvds-buildroot.mk  BoardConfig_rk3288-evb-act8846.mk  firefly-rk3288-ubuntu.mk         parameter-ubuntu.txt</span><br></pre></td></tr></table></figure><p>我选择了 BoardConfig-rk3288-evb-rk808.mk 这个配置，因为 TVI3001U 这块板子就是 RK3288 + RK808 组合的。</p><p>文件 BoardConfig-rk3288-evb-rk808.mk 内容如下。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Target arch</span></span><br><span class="line"><span class="built_in">export</span> RK_ARCH=arm</span><br><span class="line"><span class="comment"># Uboot defconfig</span></span><br><span class="line"><span class="built_in">export</span> RK_UBOOT_DEFCONFIG=rk3288</span><br><span class="line"><span class="comment"># Kernel defconfig</span></span><br><span class="line"><span class="built_in">export</span> RK_KERNEL_DEFCONFIG=rockchip_linux_defconfig</span><br><span class="line"><span class="comment"># Kernel dts</span></span><br><span class="line"><span class="built_in">export</span> RK_KERNEL_DTS=rk3288-evb-rk808-linux</span><br><span class="line"><span class="comment"># boot image type</span></span><br><span class="line"><span class="built_in">export</span> RK_BOOT_IMG=zboot.img</span><br><span class="line"><span class="comment"># kernel image path</span></span><br><span class="line"><span class="built_in">export</span> RK_KERNEL_IMG=kernel/arch/arm/boot/zImage</span><br><span class="line"><span class="comment"># parameter for GPT table</span></span><br><span class="line"><span class="built_in">export</span> RK_PARAMETER=parameter.txt</span><br><span class="line"><span class="comment"># Buildroot config</span></span><br><span class="line"><span class="built_in">export</span> RK_CFG_BUILDROOT=rockchip_rk3288</span><br><span class="line"><span class="comment"># Recovery config</span></span><br><span class="line"><span class="built_in">export</span> RK_CFG_RECOVERY=rockchip_rk3288_recovery</span><br><span class="line"><span class="comment"># ramboot config</span></span><br><span class="line"><span class="built_in">export</span> RK_CFG_RAMBOOT=</span><br><span class="line"><span class="comment"># Pcba config</span></span><br><span class="line"><span class="built_in">export</span> RK_CFG_PCBA=rockchip_rk3288_pcba</span><br><span class="line"><span class="comment"># Build jobs</span></span><br><span class="line"><span class="built_in">export</span> RK_JOBS=12</span><br><span class="line"><span class="comment"># target chip</span></span><br><span class="line"><span class="built_in">export</span> RK_TARGET_PRODUCT=rk3288</span><br><span class="line"><span class="comment"># Set rootfs type, including ext2 ext4 squashfs</span></span><br><span class="line"><span class="built_in">export</span> RK_ROOTFS_TYPE=ext4</span><br><span class="line"><span class="comment"># Set debian version (debian10: buster, debian11: bullseye)</span></span><br><span class="line"><span class="built_in">export</span> RK_DEBIAN_VERSION=buster</span><br><span class="line"><span class="comment"># yocto machine</span></span><br><span class="line"><span class="built_in">export</span> RK_YOCTO_MACHINE=rockchip-rk3288-evb</span><br><span class="line"><span class="comment"># rootfs image path</span></span><br><span class="line"><span class="built_in">export</span> RK_ROOTFS_IMG=rockdev/rootfs.<span class="variable">$&#123;RK_ROOTFS_TYPE&#125;</span></span><br><span class="line"><span class="comment"># Set oem partition type, including ext2 squashfs</span></span><br><span class="line"><span class="built_in">export</span> RK_OEM_FS_TYPE=ext2</span><br><span class="line"><span class="comment"># Set userdata partition type, including ext2, fat</span></span><br><span class="line"><span class="built_in">export</span> RK_USERDATA_FS_TYPE=ext2</span><br><span class="line"><span class="comment">#OEM config</span></span><br><span class="line"><span class="built_in">export</span> RK_OEM_DIR=oem_normal</span><br><span class="line"><span class="comment">#userdata config</span></span><br><span class="line"><span class="built_in">export</span> RK_USERDATA_DIR=userdata_normal</span><br><span class="line"><span class="comment">#misc image</span></span><br><span class="line"><span class="built_in">export</span> RK_MISC=wipe_all-misc.img</span><br><span class="line"><span class="comment">#choose enable distro module</span></span><br><span class="line"><span class="built_in">export</span> RK_DISTRO_MODULE=</span><br></pre></td></tr></table></figure><p>可以看到 <code>export RK_KERNEL_DTS=rk3288-evb-rk808-linux</code> 这么一行，所以他使用的 dts 文件就是 <code>rk3288-evb-rk808-linux.dts</code>，文件位于 <code>/data/rk3288_linux_release_v2.5.0a_20230510/kernel/arch/arm/boot/dts</code> 下。</p><p>在 SDK 目录下执行 <code>./build.sh BoardConfig-rk3288-evb-rk808.mk</code> 选择板型配置。</p><p>然后直接 <code>./build.sh</code> 一键编译。</p><p>这里我并没有对 dts 文件做任何修改，直接编译，因为我想试试直接编译的得到的固件能不能用，万一运气就是有那么好呢！</p><p>编译完成后，在 SDK 的 <code>rockdev/pack</code> 目录下可以看到打包好的固件，直接刷入即可，这里我使用的是 AndroidTool_v2.58 工具来刷入。 </p><p>首先给板子断电，然后按住 BOOT 键不放，再上电，直到在 AndroidTool 看到 <code>发现一个MASKROM设备</code>，此时就可以松开 BOOT 键，然后开始刷入固件了。</p><p>我已经提前接好调试串口，方便观察启动日志。</p><p>调试串口为下图白色箭头所指，波特率为 115200。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/tvi3001u-debug-uart.png"/></div></div><p>观察启动日志，发现没法正常启动，这我并不意外。</p><p>日志刷了一会儿就停下了。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line">U-Boot 2017.09(u-boot commit <span class="built_in">id</span>: e4da79f87a88e70b076e97de82fc8ece3b6d6ea9)(sdk version: rk3288_linux_release_20220304_v2.5.0a.xml)-ge4da79f <span class="comment">#root (Aug 09 2024 - 23:11:40 +0800)</span></span><br><span class="line"></span><br><span class="line">Model: Evb-RK3288</span><br><span class="line">PreSerial: 2, raw, 0xff690000</span><br><span class="line">DRAM:  2 GiB</span><br><span class="line">Sysmem: init</span><br><span class="line">Relocation Offset: 00000000</span><br><span class="line">Relocation fdt: 7bdd3950 - 7bdd4de5</span><br><span class="line">CR: M/C/I</span><br><span class="line">Using default environment</span><br><span class="line"></span><br><span class="line">dwmmc@ff0c0000: 1, dwmmc@ff0f0000: 0</span><br><span class="line">Bootdev(atags): mmc 0</span><br><span class="line">MMC0: High Speed, 52Mhz</span><br><span class="line">PartType: EFI</span><br><span class="line">boot mode: recovery (misc)</span><br><span class="line">Found DTB <span class="keyword">in</span> recovery part</span><br><span class="line">DTB: rk-kernel.dtb</span><br><span class="line">HASH(c): OK</span><br><span class="line">CLK: (uboot. arm: enter 1000000 KHz, init 1000000 KHz, kernel 0N/A)</span><br><span class="line">  apll 1000000 KHz</span><br><span class="line">  dpll 396000 KHz</span><br><span class="line">  cpll 24000 KHz</span><br><span class="line">  gpll 594000 KHz</span><br><span class="line">  npll 24000 KHz</span><br><span class="line">  aclk_bus 198000 KHz</span><br><span class="line">Net:   Net Initialization Skipped</span><br><span class="line">No ethernet found.</span><br><span class="line">Hit key to stop autoboot(<span class="string">&#x27;CTRL+C&#x27;</span>):  0 </span><br><span class="line">ANDROID: reboot reason: <span class="string">&quot;recovery&quot;</span></span><br><span class="line">optee check api revision fail: 1.0</span><br><span class="line">optee api revision is too low</span><br><span class="line"><span class="comment">### ERROR ### Please RESET the board ###</span></span><br></pre></td></tr></table></figure><p>一看日志发现连内核都进不去，没出现 <code>Starting kernel ...</code> 的字样。</p><p>但进不去内核应该和设备树无关，所以也就没必要尝试修改设备树了。</p><p>于是我就不停的谷歌、必应、百度，<code>optee check api revision fail: 1.0</code>、<code>optee api revision is too low</code> 究竟是个啥情况，最后猜测可能是 rkbin 版本太低。</p><h3 style="text-align:center">5. 升级 rkbin</h3><p>抱着试一试的心态，我去 Github 下载了最新的 rkbin。</p><p><a href="https://github.com/rockchip-linux/rkbin.git">https://github.com/rockchip-linux/rkbin.git</a></p><p>然后将下载下来的 rkbin 替换掉 SDK 目录下的 rkbin。</p><p>接着重新编译再刷入。</p><p>没想到被我蒙对了！这次可以启动内核了！</p><p>但是内核启动后会一直卡住，没法进系统。</p><p>完整日志如下。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br><span class="line">385</span><br><span class="line">386</span><br><span class="line">387</span><br><span class="line">388</span><br><span class="line">389</span><br><span class="line">390</span><br><span class="line">391</span><br><span class="line">392</span><br><span class="line">393</span><br><span class="line">394</span><br><span class="line">395</span><br><span class="line">396</span><br><span class="line">397</span><br><span class="line">398</span><br><span class="line">399</span><br><span class="line">400</span><br><span class="line">401</span><br><span class="line">402</span><br><span class="line">403</span><br><span class="line">404</span><br><span class="line">405</span><br><span class="line">406</span><br><span class="line">407</span><br><span class="line">408</span><br><span class="line">409</span><br><span class="line">410</span><br><span class="line">411</span><br><span class="line">412</span><br><span class="line">413</span><br><span class="line">414</span><br><span class="line">415</span><br><span class="line">416</span><br><span class="line">417</span><br><span class="line">418</span><br><span class="line">419</span><br><span class="line">420</span><br><span class="line">421</span><br><span class="line">422</span><br><span class="line">423</span><br><span class="line">424</span><br><span class="line">425</span><br><span class="line">426</span><br><span class="line">427</span><br><span class="line">428</span><br><span class="line">429</span><br><span class="line">430</span><br><span class="line">431</span><br><span class="line">432</span><br><span class="line">433</span><br><span class="line">434</span><br><span class="line">435</span><br><span class="line">436</span><br><span class="line">437</span><br><span class="line">438</span><br><span class="line">439</span><br><span class="line">440</span><br><span class="line">441</span><br><span class="line">442</span><br><span class="line">443</span><br><span class="line">444</span><br><span class="line">445</span><br><span class="line">446</span><br><span class="line">447</span><br><span class="line">448</span><br><span class="line">449</span><br><span class="line">450</span><br><span class="line">451</span><br><span class="line">452</span><br><span class="line">453</span><br><span class="line">454</span><br><span class="line">455</span><br><span class="line">456</span><br><span class="line">457</span><br><span class="line">458</span><br><span class="line">459</span><br><span class="line">460</span><br><span class="line">461</span><br><span class="line">462</span><br><span class="line">463</span><br><span class="line">464</span><br><span class="line">465</span><br><span class="line">466</span><br><span class="line">467</span><br><span class="line">468</span><br><span class="line">469</span><br><span class="line">470</span><br><span class="line">471</span><br><span class="line">472</span><br><span class="line">473</span><br><span class="line">474</span><br><span class="line">475</span><br><span class="line">476</span><br><span class="line">477</span><br><span class="line">478</span><br><span class="line">479</span><br><span class="line">480</span><br><span class="line">481</span><br><span class="line">482</span><br><span class="line">483</span><br><span class="line">484</span><br><span class="line">485</span><br><span class="line">486</span><br><span class="line">487</span><br><span class="line">488</span><br><span class="line">489</span><br><span class="line">490</span><br><span class="line">491</span><br><span class="line">492</span><br><span class="line">493</span><br><span class="line">494</span><br><span class="line">495</span><br><span class="line">496</span><br><span class="line">497</span><br><span class="line">498</span><br><span class="line">499</span><br><span class="line">500</span><br><span class="line">501</span><br><span class="line">502</span><br><span class="line">503</span><br><span class="line">504</span><br><span class="line">505</span><br><span class="line">506</span><br><span class="line">507</span><br><span class="line">508</span><br><span class="line">509</span><br><span class="line">510</span><br><span class="line">511</span><br><span class="line">512</span><br><span class="line">513</span><br><span class="line">514</span><br><span class="line">515</span><br><span class="line">516</span><br><span class="line">517</span><br><span class="line">518</span><br><span class="line">519</span><br><span class="line">520</span><br><span class="line">521</span><br><span class="line">522</span><br><span class="line">523</span><br><span class="line">524</span><br><span class="line">525</span><br><span class="line">526</span><br><span class="line">527</span><br><span class="line">528</span><br><span class="line">529</span><br><span class="line">530</span><br><span class="line">531</span><br><span class="line">532</span><br><span class="line">533</span><br><span class="line">534</span><br><span class="line">535</span><br><span class="line">536</span><br><span class="line">537</span><br><span class="line">538</span><br><span class="line">539</span><br><span class="line">540</span><br><span class="line">541</span><br><span class="line">542</span><br><span class="line">543</span><br><span class="line">544</span><br><span class="line">545</span><br><span class="line">546</span><br><span class="line">547</span><br><span class="line">548</span><br><span class="line">549</span><br><span class="line">550</span><br><span class="line">551</span><br><span class="line">552</span><br><span class="line">553</span><br><span class="line">554</span><br></pre></td><td class="code"><pre><span class="line">DDR Version 1.11 20210818</span><br><span class="line">In</span><br><span class="line">SRX</span><br><span class="line">Channel a: DDR3 400MHz</span><br><span class="line">Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB</span><br><span class="line">Channel b: DDR3 400MHz</span><br><span class="line">Bus Width=32 Col=10 Bank=8 Row=15 CS=1 Die Bus-Width=16 Size=1024MB</span><br><span class="line">OUT</span><br><span class="line">Boot1 Release Time: Jul 22 2021 09:08:57, version: 2.63</span><br><span class="line">ChipType = 0x8, 235</span><br><span class="line">mmc2:cmd19,100</span><br><span class="line">SdmmcInit=2 0</span><br><span class="line">BootCapSize=2000</span><br><span class="line">UserCapSize=7457MB</span><br><span class="line">FwPartOffset=2000 , 2000</span><br><span class="line">mmc0:cmd8,400</span><br><span class="line">mmc0:cmd8,400</span><br><span class="line">mmc0:cmd8,400</span><br><span class="line">SdmmcInit=0 1</span><br><span class="line">StorageInit ok = 25126</span><br><span class="line">SecureMode = 0</span><br><span class="line">SecureInit <span class="built_in">read</span> PBA: 0x4</span><br><span class="line">SecureInit <span class="built_in">read</span> PBA: 0x404</span><br><span class="line">SecureInit <span class="built_in">read</span> PBA: 0x804</span><br><span class="line">SecureInit <span class="built_in">read</span> PBA: 0xc04</span><br><span class="line">SecureInit <span class="built_in">read</span> PBA: 0x1004</span><br><span class="line">SecureInit <span class="built_in">read</span> PBA: 0x1404</span><br><span class="line">SecureInit <span class="built_in">read</span> PBA: 0x1804</span><br><span class="line">SecureInit <span class="built_in">read</span> PBA: 0x1c04</span><br><span class="line">SecureInit ret = 0, SecureMode = 0</span><br><span class="line">atags_set_bootdev: ret:(0)</span><br><span class="line">GPT part:  0, name:            uboot, start:0x4000, size:0x2000</span><br><span class="line">GPT part:  1, name:            trust, start:0x6000, size:0x2000</span><br><span class="line">GPT part:  2, name:             misc, start:0x8000, size:0x2000</span><br><span class="line">GPT part:  3, name:             boot, start:0xa000, size:0x10000</span><br><span class="line">GPT part:  4, name:         recovery, start:0x1a000, size:0x10000</span><br><span class="line">GPT part:  5, name:           backup, start:0x2a000, size:0x10000</span><br><span class="line">GPT part:  6, name:              oem, start:0x3a000, size:0x20000</span><br><span class="line">GPT part:  7, name:           rootfs, start:0x5a000, size:0x17ba00</span><br><span class="line">GPT part:  8, name:         userdata, start:0x1d5a00, size:0xcbaddf</span><br><span class="line">find part:uboot OK. first_lba:0x4000.</span><br><span class="line">find part:trust OK. first_lba:0x6000.</span><br><span class="line">LOADER Check OK! 0x4000, 148414</span><br><span class="line">TOS    Check OK! 0x6000, 179911</span><br><span class="line">Enter Trust OS</span><br><span class="line">INF [0x0] TEE-CORE:init_primary_helper:385: Core0 Initializing (1.1.0-449-g24f5da14f <span class="comment">#hisping.lin #3 Mon Aug 14 03:49:32 UTC 2023 arm)</span></span><br><span class="line"></span><br><span class="line">INF [0x0] TEE-CORE:init_primary_helper:386: Release version: 1.3</span><br><span class="line"></span><br><span class="line">INF [0x0] TEE-CORE:init_primary_helper:387: Next entry point address: 0x200000</span><br><span class="line"></span><br><span class="line">INF [0x0] TEE-CORE:init_teecore:83: teecore inits <span class="keyword">done</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">U-Boot 2017.09(u-boot commit <span class="built_in">id</span>: e4da79f87a88e70b076e97de82fc8ece3b6d6ea9)(sdk version: rk3288_linux_release_20220304_v2.5.0a.xml)-ge4da79f <span class="comment">#root (Jul 23 2024 - 22:16:20 +0800)</span></span><br><span class="line"></span><br><span class="line">Model: Evb-RK3288</span><br><span class="line">PreSerial: 2, raw, 0xff690000</span><br><span class="line">DRAM:  2 GiB</span><br><span class="line">Sysmem: init</span><br><span class="line">Relocation Offset: 00000000</span><br><span class="line">Relocation fdt: 7bdd3950 - 7bdd4de5</span><br><span class="line">CR: M/C/I</span><br><span class="line">Using default environment</span><br><span class="line"></span><br><span class="line">dwmmc@ff0c0000: 1, dwmmc@ff0f0000: 0</span><br><span class="line">Bootdev(atags): mmc 0</span><br><span class="line">MMC0: High Speed, 52Mhz</span><br><span class="line">PartType: EFI</span><br><span class="line">boot mode: recovery (misc)</span><br><span class="line">Found DTB <span class="keyword">in</span> recovery part</span><br><span class="line">DTB: rk-kernel.dtb</span><br><span class="line">HASH(c): OK</span><br><span class="line">I2c0 speed: 400000Hz</span><br><span class="line">PMIC:  RK808 </span><br><span class="line">vdd_arm 1100000 uV</span><br><span class="line">vdd_gpu 1100000 uV</span><br><span class="line">vcc_log 1100000 uV</span><br><span class="line">CLK: (uboot. arm: enter 1000000 KHz, init 1000000 KHz, kernel 0N/A)</span><br><span class="line">  apll 1000000 KHz</span><br><span class="line">  dpll 396000 KHz</span><br><span class="line">  cpll 24000 KHz</span><br><span class="line">  gpll 594000 KHz</span><br><span class="line">  npll 24000 KHz</span><br><span class="line">  aclk_bus 198000 KHz</span><br><span class="line">Net:   Net Initialization Skipped</span><br><span class="line">No ethernet found.</span><br><span class="line">Hit key to stop autoboot(<span class="string">&#x27;CTRL+C&#x27;</span>):  0 </span><br><span class="line">ANDROID: reboot reason: <span class="string">&quot;recovery&quot;</span></span><br><span class="line">optee api revision: 2.0</span><br><span class="line">TEEC: Waring: Could not find security partition</span><br><span class="line">Not AVB images, AVB skip</span><br><span class="line">Booting ZIMAGE kernel at 0x02008000(Uncompress to 0) with fdt at 0x08300000...</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Fdt Ramdisk skip relocation</span><br><span class="line"><span class="comment">## Booting Android Image at 0x02007800 ...</span></span><br><span class="line">Kernel load addr 0x02008000 size 6864 KiB</span><br><span class="line">RAM disk load addr 0x0a200000 size 6925 KiB</span><br><span class="line"><span class="comment">## Flattened Device Tree blob at 0x08300000</span></span><br><span class="line">   Booting using the fdt blob at 0x08300000</span><br><span class="line">   XIP Kernel Image from 0x02008000 to 0x02008000 ... OK</span><br><span class="line">  <span class="string">&#x27;reserved-memory&#x27;</span> dma-unusable@fe000000: addr=fe000000 size=1000000</span><br><span class="line">  <span class="string">&#x27;reserved-memory&#x27;</span> ramoops@00000000: addr=8000000 size=f0000</span><br><span class="line">   Using Device Tree <span class="keyword">in</span> place at 08300000, end 0831796f</span><br><span class="line">Adding bank: 0x00000000 - 0x08400000 (size: 0x08400000)</span><br><span class="line">Adding bank: 0x09310000 - 0x80000000 (size: 0x76cf0000)</span><br><span class="line">Total: 733.173 ms</span><br><span class="line"></span><br><span class="line">Starting kernel ...</span><br><span class="line"></span><br><span class="line">[    0.000000] Booting Linux on physical CPU 0x500</span><br><span class="line">[    0.000000] Initializing cgroup subsys cpuset</span><br><span class="line">[    0.000000] Initializing cgroup subsys cpu</span><br><span class="line">[    0.000000] Initializing cgroup subsys cpuacct</span><br><span class="line">[    0.000000] Linux version 4.4.194 (root@ubuntu) (kernel commit <span class="built_in">id</span>: ebb6f60626788430b3eebadd4d1fe01365685be8) (sdk version: rk3288_linux_release_20220304_v2.5.0a.xml) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) <span class="comment">#1 SMP Mon Jul 22 22:25:29 CST 2024</span></span><br><span class="line">[    0.000000] CPU: ARMv7 Processor [410fc0d1] revision 1 (ARMv7), cr=10c5387d</span><br><span class="line">[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache</span><br><span class="line">[    0.000000] Machine model: rockchip,rk3288-evb-rk808-linux</span><br><span class="line">[    0.000000] Reserved memory: failed to reserve memory <span class="keyword">for</span> node <span class="string">&#x27;drm-logo@00000000&#x27;</span>: base 0x00000000, size 0 MiB</span><br><span class="line">[    0.000000] cma: Reserved 16 MiB at 0x7f000000</span><br><span class="line">[    0.000000] Memory policy: Data cache writealloc</span><br><span class="line">[    0.000000] psci: probing <span class="keyword">for</span> conduit method from DT.</span><br><span class="line">[    0.000000] psci: PSCIv65535.65535 detected <span class="keyword">in</span> firmware.</span><br><span class="line">[    0.000000] psci: Using standard PSCI v0.2 <span class="keyword">function</span> IDs</span><br><span class="line">[    0.000000] psci: MIGRATE_INFO_TYPE not supported.</span><br><span class="line">[    0.000000] PERCPU: Embedded 14 pages/cpu @eef76000 s24728 r8192 d24424 u57344</span><br><span class="line">[    0.000000] Built 1 zonelists <span class="keyword">in</span> Zone order, mobility grouping on.  Total pages: 518896</span><br><span class="line">[    0.000000] Kernel <span class="built_in">command</span> line: storagemedia=emmc androidboot.storagemedia=emmc androidboot.mode=normal  androidboot.verifiedbootstate=orange androidboot.slot_suffix=  earlyprintk ro rootwait console=ttyFIQ0 root=PARTLABEL=rootfs rootfstype=ext4 overlayroot=device:dev=PARTLABEL=userdata,fstype=ext4,mkfs=1 swiotlb=1 coherent_pool=1m systemd.gpt_auto=0 cgroup_enable=memory swapaccount=1</span><br><span class="line">[    0.000000] PID <span class="built_in">hash</span> table entries: 4096 (order: 2, 16384 bytes)</span><br><span class="line">[    0.000000] Dentry cache <span class="built_in">hash</span> table entries: 131072 (order: 7, 524288 bytes)</span><br><span class="line">[    0.000000] Inode-cache <span class="built_in">hash</span> table entries: 65536 (order: 6, 262144 bytes)</span><br><span class="line">[    0.000000] Memory: 2023016K/2081728K available (10240K kernel code, 822K rwdata, 3008K rodata, 1024K init, 522K bss, 42328K reserved, 16384K cma-reserved, 1294336K highmem)</span><br><span class="line">[    0.000000] Virtual kernel memory layout:</span><br><span class="line">[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)</span><br><span class="line">[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)</span><br><span class="line">[    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)</span><br><span class="line">[    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)</span><br><span class="line">[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)</span><br><span class="line">[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)</span><br><span class="line">[    0.000000]       .text : 0xc0008000 - 0xc0b00000   (11232 kB)</span><br><span class="line">[    0.000000]       .init : 0xc0f00000 - 0xc1000000   (1024 kB)</span><br><span class="line">[    0.000000]       .data : 0xc1000000 - 0xc10cdaac   ( 823 kB)</span><br><span class="line">[    0.000000]        .bss : 0xc10cf000 - 0xc1151890   ( 523 kB)</span><br><span class="line">[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1</span><br><span class="line">[    0.000000] Hierarchical RCU implementation.</span><br><span class="line">[    0.000000] Build-time adjustment of leaf fanout to 32.</span><br><span class="line">[    0.000000] NR_IRQS:16 nr_irqs:16 16</span><br><span class="line">[    0.000000] Architected cp15 timer(s) running at 24.00MHz (phys).</span><br><span class="line">[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns</span><br><span class="line">[    0.000009] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns</span><br><span class="line">[    0.000030] Switching to timer-based delay loop, resolution 41ns</span><br><span class="line">[    0.004179] Console: colour dummy device 80x30</span><br><span class="line">[    0.004223] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)</span><br><span class="line">[    0.004246] pid_max: default: 32768 minimum: 301</span><br><span class="line">[    0.004402] Security Framework initialized</span><br><span class="line">[    0.004421] Yama: becoming mindful.</span><br><span class="line">[    0.004512] Mount-cache <span class="built_in">hash</span> table entries: 2048 (order: 1, 8192 bytes)</span><br><span class="line">[    0.004534] Mountpoint-cache <span class="built_in">hash</span> table entries: 2048 (order: 1, 8192 bytes)</span><br><span class="line">[    0.005694] Initializing cgroup subsys devices</span><br><span class="line">[    0.005725] Initializing cgroup subsys freezer</span><br><span class="line">[    0.005785] CPU: Testing write buffer coherency: ok</span><br><span class="line">[    0.005840] ftrace: allocating 39281 entries <span class="keyword">in</span> 116 pages</span><br><span class="line">[    0.122299] CPU0: update cpu_capacity 430</span><br><span class="line">[    0.122320] CPU0: thread -1, cpu 0, socket 5, mpidr 80000500</span><br><span class="line">[    0.122418] Setting up static identity map <span class="keyword">for</span> 0x100000 - 0x100058</span><br><span class="line">[    0.125735] CPU1: update cpu_capacity 430</span><br><span class="line">[    0.125745] CPU1: thread -1, cpu 1, socket 5, mpidr 80000501</span><br><span class="line">[    0.126960] CPU2: update cpu_capacity 430</span><br><span class="line">[    0.126969] CPU2: thread -1, cpu 2, socket 5, mpidr 80000502</span><br><span class="line">[    0.128172] CPU3: update cpu_capacity 430</span><br><span class="line">[    0.128182] CPU3: thread -1, cpu 3, socket 5, mpidr 80000503</span><br><span class="line">[    0.128353] Brought up 4 CPUs</span><br><span class="line">[    0.128395] SMP: Total of 4 processors activated (192.00 BogoMIPS).</span><br><span class="line">[    0.128405] CPU: All CPU(s) started <span class="keyword">in</span> SVC mode.</span><br><span class="line">[    0.130507] devtmpfs: initialized</span><br><span class="line">[    0.163727] VFP support v0.3: implementor 41 architecture 3 part 30 variant d rev 0</span><br><span class="line">[    0.164318] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns</span><br><span class="line">[    0.164359] futex <span class="built_in">hash</span> table entries: 1024 (order: 4, 65536 bytes)</span><br><span class="line">[    0.165887] pinctrl core: initialized pinctrl subsystem</span><br><span class="line">[    0.167496] NET: Registered protocol family 16</span><br><span class="line">[    0.171469] DMA: preallocated 1024 KiB pool <span class="keyword">for</span> atomic coherent allocations</span><br><span class="line">[    0.202977] cpuidle: using governor ladder</span><br><span class="line">[    0.233025] cpuidle: using governor menu</span><br><span class="line">[    0.233081] Registered FIQ <span class="built_in">tty</span> driver</span><br><span class="line">[    0.287365] console [pstore-1] enabled</span><br><span class="line">[    0.287380] pstore: Registered ramoops as persistent store backend</span><br><span class="line">[    0.287396] ramoops: attached 0xf0000@0x8000000, ecc: 0/0</span><br><span class="line">[    0.289864] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.</span><br><span class="line">[    0.289884] hw-breakpoint: maximum watchpoint size is 4 bytes.</span><br><span class="line">[    0.291034] fiq debugger fiq mode enabled</span><br><span class="line">[    0.794819] console [ttyFIQ0] enabled</span><br><span class="line">[    0.798887] Registered fiq debugger ttyFIQ0</span><br><span class="line">[    0.850622] vcc18_dvp: regulator get failed, ret=-517</span><br><span class="line">[    0.857451] iommu: Adding device ff910000.isp to group 0</span><br><span class="line">[    0.862923] iommu: Adding device ff910000.rkisp1 to group 1</span><br><span class="line">[    0.868717] iommu: Adding device ff930000.vop to group 2</span><br><span class="line">[    0.874185] iommu: Adding device ff940000.vop to group 3</span><br><span class="line">[    0.879709] iommu: Adding device ff9a0000.vpu-service to group 4</span><br><span class="line">[    0.885903] iommu: Adding device ff9c0000.hevc-service to group 5</span><br><span class="line">[    0.892924] rk_iommu ff914000.iommu: can<span class="string">&#x27;t get sclk</span></span><br><span class="line"><span class="string">[    0.898474] rk_iommu ff930300.iommu: can&#x27;</span>t get sclk</span><br><span class="line">[    0.903876] rk_iommu ff940300.iommu: can<span class="string">&#x27;t get sclk</span></span><br><span class="line"><span class="string">[    0.909218] rk_iommu ff9a0800.iommu: can&#x27;</span>t get sclk</span><br><span class="line">[    0.914686] rk_iommu ff9c0440.iommu: can<span class="string">&#x27;t get sclk</span></span><br><span class="line"><span class="string">[    0.920494] SCSI subsystem initialized</span></span><br><span class="line"><span class="string">[    0.924703] usbcore: registered new interface driver usbfs</span></span><br><span class="line"><span class="string">[    0.930290] usbcore: registered new interface driver hub</span></span><br><span class="line"><span class="string">[    0.935821] usbcore: registered new device driver usb</span></span><br><span class="line"><span class="string">[    0.941112] media: Linux media interface: v0.10</span></span><br><span class="line"><span class="string">[    0.945767] Linux video capture interface: v2.00</span></span><br><span class="line"><span class="string">[    0.950551] pps_core: LinuxPPS API ver. 1 registered</span></span><br><span class="line"><span class="string">[    0.955519] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti &lt;giometti@linux.it&gt;</span></span><br><span class="line"><span class="string">[    0.964720] PTP clock support registered</span></span><br><span class="line"><span class="string">[    0.971323] Advanced Linux Sound Architecture Driver Initialized.</span></span><br><span class="line"><span class="string">[    0.978520] Bluetooth: Core ver 2.21</span></span><br><span class="line"><span class="string">[    0.982165] NET: Registered protocol family 31</span></span><br><span class="line"><span class="string">[    0.986614] Bluetooth: HCI device and connection manager initialized</span></span><br><span class="line"><span class="string">[    0.993027] Bluetooth: HCI socket layer initialized</span></span><br><span class="line"><span class="string">[    0.997919] Bluetooth: L2CAP socket layer initialized</span></span><br><span class="line"><span class="string">[    1.003083] Bluetooth: SCO socket layer initialized</span></span><br><span class="line"><span class="string">[    1.009628] rockchip-cpuinfo cpuinfo: Serial: adb08770ad432f7d</span></span><br><span class="line"><span class="string">[    1.017395] clocksource: Switched to clocksource arch_sys_counter</span></span><br><span class="line"><span class="string">[    1.110654] /thermal-zones/soc-thermal/cooling-maps/map1: could not get #cooling-cells for /gpu@ffa30000</span></span><br><span class="line"><span class="string">[    1.120192] missing cooling_device property</span></span><br><span class="line"><span class="string">[    1.124392] failed to build thermal zone soc-thermal: -22</span></span><br><span class="line"><span class="string">[    1.130554] NET: Registered protocol family 2</span></span><br><span class="line"><span class="string">[    1.135828] TCP established hash table entries: 8192 (order: 3, 32768 bytes)</span></span><br><span class="line"><span class="string">[    1.143047] TCP bind hash table entries: 8192 (order: 5, 163840 bytes)</span></span><br><span class="line"><span class="string">[    1.149881] TCP: Hash tables configured (established 8192 bind 8192)</span></span><br><span class="line"><span class="string">[    1.156340] UDP hash table entries: 512 (order: 2, 24576 bytes)</span></span><br><span class="line"><span class="string">[    1.162364] UDP-Lite hash table entries: 512 (order: 2, 24576 bytes)</span></span><br><span class="line"><span class="string">[    1.169104] NET: Registered protocol family 1</span></span><br><span class="line"><span class="string">[    1.173983] RPC: Registered named UNIX socket transport module.</span></span><br><span class="line"><span class="string">[    1.179965] RPC: Registered udp transport module.</span></span><br><span class="line"><span class="string">[    1.184679] RPC: Registered tcp transport module.</span></span><br><span class="line"><span class="string">[    1.189420] RPC: Registered tcp NFSv4.1 backchannel transport module.</span></span><br><span class="line"><span class="string">[    1.196191] Trying to unpack rootfs image as initramfs...</span></span><br><span class="line"><span class="string">[    1.921077] Freeing initrd memory: 6928K</span></span><br><span class="line"><span class="string">[    1.926812] hw perfevents: enabled with armv7_cortex_a12 PMU driver, 7 counters available</span></span><br><span class="line"><span class="string">[    1.938864] Initialise system trusted keyring</span></span><br><span class="line"><span class="string">[    1.959026] squashfs: version 4.0 (2009/01/31) Phillip Lougher</span></span><br><span class="line"><span class="string">[    1.968207] NFS: Registering the id_resolver key type</span></span><br><span class="line"><span class="string">[    1.973324] Key type id_resolver registered</span></span><br><span class="line"><span class="string">[    1.977573] Key type id_legacy registered</span></span><br><span class="line"><span class="string">[    1.981624] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).</span></span><br><span class="line"><span class="string">[    1.989080] fuse init (API version 7.23)</span></span><br><span class="line"><span class="string">[    2.002542] NET: Registered protocol family 38</span></span><br><span class="line"><span class="string">[    2.007033] Key type asymmetric registered</span></span><br><span class="line"><span class="string">[    2.011262] Asymmetric key parser &#x27;</span>x509<span class="string">&#x27; registered</span></span><br><span class="line"><span class="string">[    2.016270] bounce: pool size: 64 pages</span></span><br><span class="line"><span class="string">[    2.020538] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)</span></span><br><span class="line"><span class="string">[    2.028061] io scheduler noop registered</span></span><br><span class="line"><span class="string">[    2.032010] io scheduler deadline registered</span></span><br><span class="line"><span class="string">[    2.036347] io scheduler cfq registered (default)</span></span><br><span class="line"><span class="string">[    2.047618] rockchip-dp-phy ff770000.syscon:edp-phy: No edp_24m reset control specified</span></span><br><span class="line"><span class="string">[    2.059325] backlight supply power not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    2.066769] rk-vcodec ff9a0000.vpu-service: no regulator for vcodec</span></span><br><span class="line"><span class="string">[    2.073587] rk-vcodec ff9a0000.vpu-service: probe device</span></span><br><span class="line"><span class="string">[    2.079415] rk-vcodec ff9a0000.vpu-service: drm allocator with mmu enabled</span></span><br><span class="line"><span class="string">[    2.087632] rk-vcodec ff9a0000.vpu-service: could not find power_model node</span></span><br><span class="line"><span class="string">[    2.094606] rk-vcodec ff9a0000.vpu-service: init success</span></span><br><span class="line"><span class="string">[    2.100547] rk-vcodec ff9c0000.hevc-service: no regulator for vcodec</span></span><br><span class="line"><span class="string">[    2.107458] rk-vcodec ff9c0000.hevc-service: probe device</span></span><br><span class="line"><span class="string">[    2.113293] rk-vcodec ff9c0000.hevc-service: drm allocator with mmu enabled</span></span><br><span class="line"><span class="string">[    2.121229] rk-vcodec ff9c0000.hevc-service: could not find power_model node</span></span><br><span class="line"><span class="string">[    2.128345] rk-vcodec ff9c0000.hevc-service: init success</span></span><br><span class="line"><span class="string">[    2.137979] dma-pl330 ff250000.dma-controller: Loaded driver for PL330 DMAC-241330</span></span><br><span class="line"><span class="string">[    2.145570] dma-pl330 ff250000.dma-controller: DBUFF-128x8bytes Num_Chans-8 Num_Peri-20 Num_Events-16</span></span><br><span class="line"><span class="string">[    2.156253] dma-pl330 ff600000.dma-controller: Loaded driver for PL330 DMAC-241330</span></span><br><span class="line"><span class="string">[    2.163895] dma-pl330 ff600000.dma-controller: DBUFF-64x8bytes Num_Chans-5 Num_Peri-6 Num_Events-10</span></span><br><span class="line"><span class="string">[    2.175245] rockchip-system-monitor rockchip-system-monitor: system monitor probe</span></span><br><span class="line"><span class="string">[    2.184864] Serial: 8250/16550 driver, 5 ports, IRQ sharing disabled</span></span><br><span class="line"><span class="string">[    2.192419] ff180000.serial: ttyS0 at MMIO 0xff180000 (irq = 37, base_baud = 1500000) is a 16550A</span></span><br><span class="line"><span class="string">[    2.204040] [drm] Initialized drm 1.1.0 20060810</span></span><br><span class="line"><span class="string">[    2.217337] usbcore: registered new interface driver udl</span></span><br><span class="line"><span class="string">[    2.225792] panel-simple edp-panel: failed to get power regulator: -517</span></span><br><span class="line"><span class="string">[    2.234597] mali ffa3000000010000.gpu: Invalid register resource</span></span><br><span class="line"><span class="string">[    2.240664] mali ffa3000000010000.gpu: Register map failed</span></span><br><span class="line"><span class="string">[    2.246179] mali: probe of ffa3000000010000.gpu failed with error -2</span></span><br><span class="line"><span class="string">[    2.254650] brd: module loaded</span></span><br><span class="line"><span class="string">[    2.268926] loop: module loaded</span></span><br><span class="line"><span class="string">[    2.273339] zram: Added device: zram0</span></span><br><span class="line"><span class="string">[    2.277062] lkdtm: No crash points registered, enable through debugfs</span></span><br><span class="line"><span class="string">[    2.285383] tun: Universal TUN/TAP device driver, 1.6</span></span><br><span class="line"><span class="string">[    2.290500] tun: (C) 1999-2004 Max Krasnyansky &lt;maxk@qualcomm.com&gt;</span></span><br><span class="line"><span class="string">[    2.299252] rk_gmac-dwmac ff290000.ethernet: clock input or output? (input).</span></span><br><span class="line"><span class="string">[    2.306317] rk_gmac-dwmac ff290000.ethernet: TX delay(0x30).</span></span><br><span class="line"><span class="string">[    2.312029] rk_gmac-dwmac ff290000.ethernet: RX delay(0x10).</span></span><br><span class="line"><span class="string">[    2.317755] rk_gmac-dwmac ff290000.ethernet: integrated PHY? (no).</span></span><br><span class="line"><span class="string">[    2.324175] rk_gmac-dwmac ff290000.ethernet: cannot get clock clk_mac_speed</span></span><br><span class="line"><span class="string">[    2.331172] rk_gmac-dwmac ff290000.ethernet: clock input from PHY</span></span><br><span class="line"><span class="string">[    2.342290] rk_gmac-dwmac ff290000.ethernet: init for RGMII</span></span><br><span class="line"><span class="string">[    2.348065] stmmac - user ID: 0x10, Synopsys ID: 0x35</span></span><br><span class="line"><span class="string">[    2.353126]  Ring mode enabled</span></span><br><span class="line"><span class="string">[    2.356188]  DMA HW capability register supported</span></span><br><span class="line"><span class="string">[    2.360751]  Normal descriptors</span></span><br><span class="line"><span class="string">[    2.364094]  RX Checksum Offload Engine supported (type 2)</span></span><br><span class="line"><span class="string">[    2.369605]  TX Checksum insertion supported</span></span><br><span class="line"><span class="string">[    2.373882]  Wake-Up On Lan supported</span></span><br><span class="line"><span class="string">[    2.377651]  Enable RX Mitigation via HW Watchdog Timer</span></span><br><span class="line"><span class="string">[    2.469565] libphy: stmmac: probed</span></span><br><span class="line"><span class="string">[    2.472995] eth%d: PHY ID 001cc915 at 0 IRQ POLL (stmmac-0:00) active</span></span><br><span class="line"><span class="string">[    2.479475] eth%d: PHY ID 001cc915 at 1 IRQ POLL (stmmac-0:01)</span></span><br><span class="line"><span class="string">[    2.488045] PPP generic driver version 2.4.2</span></span><br><span class="line"><span class="string">[    2.492854] usbcore: registered new interface driver rndis_wlan</span></span><br><span class="line"><span class="string">[    2.499425] usbcore: registered new interface driver rt2800usb</span></span><br><span class="line"><span class="string">[    2.505287] Rockchip WiFi SYS interface (V1.00) ... </span></span><br><span class="line"><span class="string">[    2.510384] pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver</span></span><br><span class="line"><span class="string">[    2.517911] usbcore: registered new interface driver pegasus</span></span><br><span class="line"><span class="string">[    2.523674] usbcore: registered new interface driver rtl8150</span></span><br><span class="line"><span class="string">[    2.529483] usbcore: registered new interface driver r8152</span></span><br><span class="line"><span class="string">[    2.535085] usbcore: registered new interface driver asix</span></span><br><span class="line"><span class="string">[    2.540630] usbcore: registered new interface driver ax88179_178a</span></span><br><span class="line"><span class="string">[    2.546818] usbcore: registered new interface driver cdc_ether</span></span><br><span class="line"><span class="string">[    2.552789] usbcore: registered new interface driver dm9601</span></span><br><span class="line"><span class="string">[    2.558530] usbcore: registered new interface driver smsc75xx</span></span><br><span class="line"><span class="string">[    2.564395] usbcore: registered new interface driver smsc95xx</span></span><br><span class="line"><span class="string">[    2.570297] usbcore: registered new interface driver net1080</span></span><br><span class="line"><span class="string">[    2.576061] usbcore: registered new interface driver rndis_host</span></span><br><span class="line"><span class="string">[    2.582116] usbcore: registered new interface driver MOSCHIP usb-ethernet driver</span></span><br><span class="line"><span class="string">[    2.589690] usbcore: registered new interface driver cdc_ncm</span></span><br><span class="line"><span class="string">[    2.595447] usbcore: registered new interface driver cdc_mbim</span></span><br><span class="line"><span class="string">[    2.601665] ff540000.usb supply vusb_d not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    2.608416] ff540000.usb supply vusb_a not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    2.728117] dwc2 ff540000.usb: DWC OTG Controller</span></span><br><span class="line"><span class="string">[    2.732869] dwc2 ff540000.usb: new USB bus registered, assigned bus number 1</span></span><br><span class="line"><span class="string">[    2.740017] dwc2 ff540000.usb: irq 43, io mem 0xff540000</span></span><br><span class="line"><span class="string">[    2.745742] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002</span></span><br><span class="line"><span class="string">[    2.752592] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1</span></span><br><span class="line"><span class="string">[    2.759857] usb usb1: Product: DWC OTG Controller</span></span><br><span class="line"><span class="string">[    2.764573] usb usb1: Manufacturer: Linux 4.4.194 dwc2_hsotg</span></span><br><span class="line"><span class="string">[    2.770263] usb usb1: SerialNumber: ff540000.usb</span></span><br><span class="line"><span class="string">[    2.775961] hub 1-0:1.0: USB hub found</span></span><br><span class="line"><span class="string">[    2.779835] hub 1-0:1.0: 1 port detected</span></span><br><span class="line"><span class="string">[    2.784800] ff580000.usb supply vusb_d not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    2.791573] ff580000.usb supply vusb_a not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    2.917495] dwc2 ff580000.usb: EPs: 10, dedicated fifos, 972 entries in SPRAM</span></span><br><span class="line"><span class="string">[    2.925425] dwc2 ff580000.usb: DWC OTG Controller</span></span><br><span class="line"><span class="string">[    2.930239] dwc2 ff580000.usb: new USB bus registered, assigned bus number 2</span></span><br><span class="line"><span class="string">[    2.937336] dwc2 ff580000.usb: irq 44, io mem 0xff580000</span></span><br><span class="line"><span class="string">[    2.942988] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002</span></span><br><span class="line"><span class="string">[    2.949834] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1</span></span><br><span class="line"><span class="string">[    2.957066] usb usb2: Product: DWC OTG Controller</span></span><br><span class="line"><span class="string">[    2.961809] usb usb2: Manufacturer: Linux 4.4.194 dwc2_hsotg</span></span><br><span class="line"><span class="string">[    2.967501] usb usb2: SerialNumber: ff580000.usb</span></span><br><span class="line"><span class="string">[    2.973143] hub 2-0:1.0: USB hub found</span></span><br><span class="line"><span class="string">[    2.976971] hub 2-0:1.0: 1 port detected</span></span><br><span class="line"><span class="string">[    2.983514] ehci_hcd: USB 2.0 &#x27;</span>Enhanced<span class="string">&#x27; Host Controller (EHCI) Driver</span></span><br><span class="line"><span class="string">[    2.990125] ehci-platform: EHCI generic platform driver</span></span><br><span class="line"><span class="string">[    2.995803] ehci-platform ff500000.usb: EHCI Host Controller</span></span><br><span class="line"><span class="string">[    3.001921] ehci-platform ff500000.usb: new USB bus registered, assigned bus number 3</span></span><br><span class="line"><span class="string">[    3.010075] ehci-platform ff500000.usb: irq 41, io mem 0xff500000</span></span><br><span class="line"><span class="string">[    3.027470] ehci-platform ff500000.usb: USB 2.0 started, EHCI 1.00</span></span><br><span class="line"><span class="string">[    3.033980] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002</span></span><br><span class="line"><span class="string">[    3.040836] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1</span></span><br><span class="line"><span class="string">[    3.048100] usb usb3: Product: EHCI Host Controller</span></span><br><span class="line"><span class="string">[    3.052985] usb usb3: Manufacturer: Linux 4.4.194 ehci_hcd</span></span><br><span class="line"><span class="string">[    3.058508] usb usb3: SerialNumber: ff500000.usb</span></span><br><span class="line"><span class="string">[    3.064182] hub 3-0:1.0: USB hub found</span></span><br><span class="line"><span class="string">[    3.068056] hub 3-0:1.0: 1 port detected</span></span><br><span class="line"><span class="string">[    3.073168] ohci_hcd: USB 1.1 &#x27;</span>Open<span class="string">&#x27; Host Controller (OHCI) Driver</span></span><br><span class="line"><span class="string">[    3.079657] ohci-platform: OHCI generic platform driver</span></span><br><span class="line"><span class="string">[    3.085542] usbcore: registered new interface driver cdc_acm</span></span><br><span class="line"><span class="string">[    3.091252] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters</span></span><br><span class="line"><span class="string">[    3.099415] usbcore: registered new interface driver cdc_wdm</span></span><br><span class="line"><span class="string">[    3.105295] usbcore: registered new interface driver usb-storage</span></span><br><span class="line"><span class="string">[    3.111550] usbcore: registered new interface driver usbserial</span></span><br><span class="line"><span class="string">[    3.117524] usbcore: registered new interface driver usbserial_generic</span></span><br><span class="line"><span class="string">[    3.124112] usbserial: USB Serial support registered for generic</span></span><br><span class="line"><span class="string">[    3.130275] usbcore: registered new interface driver cp210x</span></span><br><span class="line"><span class="string">[    3.135923] usbserial: USB Serial support registered for cp210x</span></span><br><span class="line"><span class="string">[    3.142038] usbcore: registered new interface driver ftdi_sio</span></span><br><span class="line"><span class="string">[    3.147890] usbserial: USB Serial support registered for FTDI USB Serial Device</span></span><br><span class="line"><span class="string">[    3.155445] usbcore: registered new interface driver keyspan</span></span><br><span class="line"><span class="string">[    3.161210] usbserial: USB Serial support registered for Keyspan - (without firmware)</span></span><br><span class="line"><span class="string">[    3.170279] usbserial: USB Serial support registered for Keyspan 1 port adapter</span></span><br><span class="line"><span class="string">[    3.177702] usbserial: USB Serial support registered for Keyspan 2 port adapter</span></span><br><span class="line"><span class="string">[    3.185069] usbserial: USB Serial support registered for Keyspan 4 port adapter</span></span><br><span class="line"><span class="string">[    3.192536] usbcore: registered new interface driver option</span></span><br><span class="line"><span class="string">[    3.198218] usbserial: USB Serial support registered for GSM modem (1-port)</span></span><br><span class="line"><span class="string">[    3.205498] usbcore: registered new interface driver oti6858</span></span><br><span class="line"><span class="string">[    3.211277] usbserial: USB Serial support registered for oti6858</span></span><br><span class="line"><span class="string">[    3.217434] usbcore: registered new interface driver pl2303</span></span><br><span class="line"><span class="string">[    3.223072] usbserial: USB Serial support registered for pl2303</span></span><br><span class="line"><span class="string">[    3.229150] usbcore: registered new interface driver qcserial</span></span><br><span class="line"><span class="string">[    3.234957] usbserial: USB Serial support registered for Qualcomm USB modem</span></span><br><span class="line"><span class="string">[    3.242082] usbcore: registered new interface driver sierra</span></span><br><span class="line"><span class="string">[    3.247760] usbserial: USB Serial support registered for Sierra USB modem</span></span><br><span class="line"><span class="string">[    3.256364] usbcore: registered new interface driver iforce</span></span><br><span class="line"><span class="string">[    3.262142] usbcore: registered new interface driver xpad</span></span><br><span class="line"><span class="string">[    3.268295] usbcore: registered new interface driver usbtouchscreen</span></span><br><span class="line"><span class="string">[    3.275816] i2c /dev entries driver</span></span><br><span class="line"><span class="string">[    3.281507] rk808 0-001b: Pmic Chip id: 0x0</span></span><br><span class="line"><span class="string">[    3.289675] rk808-regulator rk808-regulator: there is no dvs0 gpio</span></span><br><span class="line"><span class="string">[    3.295957] rk808-regulator rk808-regulator: there is no dvs1 gpio</span></span><br><span class="line"><span class="string">[    3.302340] DCDC_REG1: supplied by vcc_sys</span></span><br><span class="line"><span class="string">[    3.307656] DCDC_REG2: supplied by vcc_sys</span></span><br><span class="line"><span class="string">[    3.312848] DCDC_REG3: supplied by vcc_sys</span></span><br><span class="line"><span class="string">[    3.317701] DCDC_REG4: supplied by vcc_sys</span></span><br><span class="line"><span class="string">[    3.322563] vcc18_dvp: supplied by vcc_io</span></span><br><span class="line"><span class="string">[    3.326829] LDO_REG1: supplied by vcc_sys</span></span><br><span class="line"><span class="string">[    3.332519] LDO_REG2: supplied by vcc_sys</span></span><br><span class="line"><span class="string">[    3.339362] LDO_REG4: supplied by vcc_io</span></span><br><span class="line"><span class="string">[    3.344730] LDO_REG5: supplied by vcc_io</span></span><br><span class="line"><span class="string">[    3.354434] SWITCH_REG1: supplied by vcc_io</span></span><br><span class="line"><span class="string">[    3.359416] SWITCH_REG2: supplied by vcc_io</span></span><br><span class="line"><span class="string">[    3.368263] rk808-rtc rk808-rtc: rtc core: registered rk808-rtc as rtc0</span></span><br><span class="line"><span class="string">[    3.375712] rk3x-i2c ff650000.i2c: Initialized RK3xxx I2C bus at f0a90000</span></span><br><span class="line"><span class="string">[    3.384101] rk3x-i2c ff140000.i2c: Initialized RK3xxx I2C bus at f0a92000</span></span><br><span class="line"><span class="string">[    3.392378] rk3x-i2c ff150000.i2c: Initialized RK3xxx I2C bus at f0a94000</span></span><br><span class="line"><span class="string">[    3.401399] input: gsl3673 as /devices/platform/ff160000.i2c/i2c-4/4-0040/input/input0</span></span><br><span class="line"><span class="string">[    4.310268] gsl3673 4-0040: GSL3673 test_i2c error!</span></span><br><span class="line"><span class="string">[    4.315162] gsl3673 4-0040: gsl_probe: init_chip failed</span></span><br><span class="line"><span class="string">[    4.347673] gsl3673: probe of 4-0040 failed with error -1</span></span><br><span class="line"><span class="string">[    4.353120] rk3x-i2c ff160000.i2c: Initialized RK3xxx I2C bus at f0a96000</span></span><br><span class="line"><span class="string">[    4.361393] rk3x-i2c ff660000.i2c: Initialized RK3xxx I2C bus at f0a98000</span></span><br><span class="line"><span class="string">[    4.369683] vm149c 3-000c: probing...</span></span><br><span class="line"><span class="string">[    4.373364] vm149c 3-000c: driver version: 00.01.00</span></span><br><span class="line"><span class="string">[    4.378296] vm149c 3-000c: could not get module rockchip,vcm-start-current from dts!</span></span><br><span class="line"><span class="string">[    4.386048] vm149c 3-000c: could not get module rockchip,vcm-rated-current from dts!</span></span><br><span class="line"><span class="string">[    4.393824] vm149c 3-000c: could not get module rockchip,vcm-step-mode from dts!</span></span><br><span class="line"><span class="string">[    4.401295] vm149c 3-000c: probing successful</span></span><br><span class="line"><span class="string">[    4.408048] rkisp1 ff910000.rkisp1: rkisp1 driver version: v00.01.05</span></span><br><span class="line"><span class="string">[    4.414458] rkisp1 ff910000.rkisp1: Missing rockchip,grf property</span></span><br><span class="line"><span class="string">[    4.424475] usbcore: registered new interface driver uvcvideo</span></span><br><span class="line"><span class="string">[    4.430280] USB Video Class driver (1.1.1)</span></span><br><span class="line"><span class="string">[    4.438411] Boot mode: normal</span></span><br><span class="line"><span class="string">[    4.443918] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com</span></span><br><span class="line"><span class="string">[    4.452758] Bluetooth: Virtual HCI driver ver 1.5</span></span><br><span class="line"><span class="string">[    4.457813] Bluetooth: HCI UART driver ver 2.3</span></span><br><span class="line"><span class="string">[    4.462269] Bluetooth: HCI UART protocol H4 registered</span></span><br><span class="line"><span class="string">[    4.467461] Bluetooth: HCI UART protocol LL registered</span></span><br><span class="line"><span class="string">[    4.472607] Bluetooth: HCI UART protocol ATH3K registered</span></span><br><span class="line"><span class="string">[    4.478182] usbcore: registered new interface driver bfusb</span></span><br><span class="line"><span class="string">[    4.483798] usbcore: registered new interface driver btusb</span></span><br><span class="line"><span class="string">[    4.489936] cpu cpu0: bin=1</span></span><br><span class="line"><span class="string">[    4.492956] cpu cpu0: leakage=29</span></span><br><span class="line"><span class="string">[    4.496363] cpu cpu0: Failed to get pvtm</span></span><br><span class="line"><span class="string">[    4.500448] cpu cpu0: bin-scale=25</span></span><br><span class="line"><span class="string">[    4.506024] cpu cpu0: avs=0</span></span><br><span class="line"><span class="string">[    4.508926] cpu cpu0: scale_rate=1512000000</span></span><br><span class="line"><span class="string">[    4.513389] cpu cpu0: l=-2147483648 h=2147483647 hyst=0 l_limit=0 h_limit=0 h_table=0</span></span><br><span class="line"><span class="string">[    4.521311] cpu cpu0: failed to read out thermal zone (-22)</span></span><br><span class="line"><span class="string">[    4.527625] cpu cpu0: failed to find power_model node</span></span><br><span class="line"><span class="string">[    4.532949] sdhci: Secure Digital Host Controller Interface driver</span></span><br><span class="line"><span class="string">[    4.539166] sdhci: Copyright(c) Pierre Ossman</span></span><br><span class="line"><span class="string">[    4.543535] Synopsys Designware Multimedia Card Interface Driver</span></span><br><span class="line"><span class="string">[    4.550746] dwmmc_rockchip ff0c0000.dwmmc: IDMAC supports 32-bit address mode.</span></span><br><span class="line"><span class="string">[    4.558042] dwmmc_rockchip ff0c0000.dwmmc: Using internal DMA controller.</span></span><br><span class="line"><span class="string">[    4.564837] dwmmc_rockchip ff0c0000.dwmmc: Version ID is 270a</span></span><br><span class="line"><span class="string">[    4.570640] dwmmc_rockchip ff0c0000.dwmmc: DW MMC controller at irq 29,32 bit host data width,256 deep fifo</span></span><br><span class="line"><span class="string">[    4.580396] dwmmc_rockchip ff0c0000.dwmmc: &#x27;</span>clock-freq-min-max<span class="string">&#x27; property was deprecated.</span></span><br><span class="line"><span class="string">[    4.588831] rockchip-iodomain ff770000.syscon:io-domains: Setting to 3300000 done</span></span><br><span class="line"><span class="string">[    4.596306] rockchip-iodomain ff770000.syscon:io-domains: Setting to 3300000 done</span></span><br><span class="line"><span class="string">[    4.616343] mmc_host mmc0: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)</span></span><br><span class="line"><span class="string">[    4.638179] dwmmc_rockchip ff0c0000.dwmmc: 1 slots initialized</span></span><br><span class="line"><span class="string">[    4.644077] dwmmc_rockchip ff0d000000004000.dwmmc: could not find pctldev for node /syscon@ff770000/mipi-phy-rx0/ports/port@1/endpoint, deferring probe</span></span><br><span class="line"><span class="string">[    4.657946] dwmmc_rockchip ff0f0000.dwmmc: IDMAC supports 32-bit address mode.</span></span><br><span class="line"><span class="string">[    4.665195] dwmmc_rockchip ff0f0000.dwmmc: Using internal DMA controller.</span></span><br><span class="line"><span class="string">[    4.671991] dwmmc_rockchip ff0f0000.dwmmc: Version ID is 270a</span></span><br><span class="line"><span class="string">[    4.677773] dwmmc_rockchip ff0f0000.dwmmc: DW MMC controller at irq 31,32 bit host data width,256 deep fifo</span></span><br><span class="line"><span class="string">[    4.687518] dwmmc_rockchip ff0f0000.dwmmc: &#x27;</span>clock-freq-min-max<span class="string">&#x27; property was deprecated.</span></span><br><span class="line"><span class="string">[    4.695618] dwmmc_rockchip ff0f0000.dwmmc: No vmmc regulator found</span></span><br><span class="line"><span class="string">[    4.701804] dwmmc_rockchip ff0f0000.dwmmc: No vqmmc regulator found</span></span><br><span class="line"><span class="string">[    4.720744] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)</span></span><br><span class="line"><span class="string">[    4.742676] dwmmc_rockchip ff0f0000.dwmmc: 1 slots initialized</span></span><br><span class="line"><span class="string">[    4.748839] sdhci-pltfm: SDHCI platform and OF driver helper</span></span><br><span class="line"><span class="string">[    4.754999] hidraw: raw HID events driver (C) Jiri Kosina</span></span><br><span class="line"><span class="string">[    4.761352] usbcore: registered new interface driver usbhid</span></span><br><span class="line"><span class="string">[    4.766935] usbhid: USB HID core driver</span></span><br><span class="line"><span class="string">[    4.771056] ashmem: initialized</span></span><br><span class="line"><span class="string">[    4.774868] rockchip-dmc dmc: unable to get devfreq-event device : dfi</span></span><br><span class="line"><span class="string">[    4.782683] rknandbase v1.2 2018-05-08</span></span><br><span class="line"><span class="string">[    4.786945] usbcore: registered new interface driver snd-usb-audio</span></span><br><span class="line"><span class="string">[    4.796353] u32 classifier</span></span><br><span class="line"><span class="string">[    4.799113] Netfilter messages via NETLINK v0.30.</span></span><br><span class="line"><span class="string">[    4.803873] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)</span></span><br><span class="line"><span class="string">[    4.810186] ctnetlink v0.93: registering with nfnetlink.</span></span><br><span class="line"><span class="string">[    4.815599] ip_set: protocol 6</span></span><br><span class="line"><span class="string">[    4.818699] IPVS: Registered protocols ()</span></span><br><span class="line"><span class="string">[    4.822751] IPVS: Connection hash table configured (size=4096, memory=32Kbytes)</span></span><br><span class="line"><span class="string">[    4.830137] IPVS: Creating netns size=1104 id=0</span></span><br><span class="line"><span class="string">[    4.834704] IPVS: ipvs loaded.</span></span><br><span class="line"><span class="string">[    4.838026] ip_tables: (C) 2000-2006 Netfilter Core Team</span></span><br><span class="line"><span class="string">[    4.843462] Initializing XFRM netlink socket</span></span><br><span class="line"><span class="string">[    4.848292] NET: Registered protocol family 10</span></span><br><span class="line"><span class="string">[    4.853691] mmc_host mmc1: Bus speed (slot 0) = 99000000Hz (slot req 100000000Hz, actual 99000000HZ div = 0)</span></span><br><span class="line"><span class="string">[    4.863785] ip6_tables: (C) 2000-2006 Netfilter Core Team</span></span><br><span class="line"><span class="string">[    4.869297] sit: IPv6 over IPv4 tunneling driver</span></span><br><span class="line"><span class="string">[    4.874273] NET: Registered protocol family 17</span></span><br><span class="line"><span class="string">[    4.878768] NET: Registered protocol family 15</span></span><br><span class="line"><span class="string">[    4.883233] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.</span></span><br><span class="line"><span class="string">[    4.895846] Bridge firewalling registered</span></span><br><span class="line"><span class="string">[    4.899948] Bluetooth: RFCOMM socket layer initialized</span></span><br><span class="line"><span class="string">[    4.905098] Bluetooth: RFCOMM ver 1.11</span></span><br><span class="line"><span class="string">[    4.908866] Bluetooth: HIDP (Human Interface Emulation) ver 1.2</span></span><br><span class="line"><span class="string">[    4.914788] Bluetooth: HIDP socket layer initialized</span></span><br><span class="line"><span class="string">[    4.919797] 8021q: 802.1Q VLAN Support v1.8</span></span><br><span class="line"><span class="string">[    4.923991] lib80211: common routines for IEEE802.11 drivers</span></span><br><span class="line"><span class="string">[    4.929685] [WLAN_RFKILL]: Enter rfkill_wlan_init</span></span><br><span class="line"><span class="string">[    4.934653] [WLAN_RFKILL]: Enter rfkill_wlan_probe</span></span><br><span class="line"><span class="string">[    4.939477] [WLAN_RFKILL]: wlan_platdata_parse_dt: wifi_chip_type = ap6335</span></span><br><span class="line"><span class="string">[    4.946347] [WLAN_RFKILL]: wlan_platdata_parse_dt: enable wifi power control.</span></span><br><span class="line"><span class="string">[    4.953482] [WLAN_RFKILL]: wlan_platdata_parse_dt: wifi power controled by gpio.</span></span><br><span class="line"><span class="string">[    4.960912] [WLAN_RFKILL]: wlan_platdata_parse_dt: get property: WIFI,host_wake_irq = 150, flags = 0.</span></span><br><span class="line"><span class="string">[    4.970128] [WLAN_RFKILL]: wlan_platdata_parse_dt: The ref_wifi_clk not found !</span></span><br><span class="line"><span class="string">[    4.977439] [WLAN_RFKILL]: rfkill_wlan_probe: init gpio</span></span><br><span class="line"><span class="string">[    4.982660] [WLAN_RFKILL]: Exit rfkill_wlan_probe</span></span><br><span class="line"><span class="string">[    4.987414] [BT_RFKILL]: Enter rfkill_rk_init</span></span><br><span class="line"><span class="string">[    4.991981] [BT_RFKILL]: bluetooth_platdata_parse_dt: get property: uart_rts_gpios = 139.</span></span><br><span class="line"><span class="string">[    5.000195] [BT_RFKILL]: bluetooth_platdata_parse_dt: get property: BT,reset_gpio = 149.</span></span><br><span class="line"><span class="string">[    5.008303] [BT_RFKILL]: bluetooth_platdata_parse_dt: get property: BT,wake_gpio = 146.</span></span><br><span class="line"><span class="string">[    5.016313] [BT_RFKILL]: bluetooth_platdata_parse_dt: get property: BT,wake_host_irq = 151.</span></span><br><span class="line"><span class="string">[    5.024965] [BT_RFKILL]: Request irq for bt wakeup host</span></span><br><span class="line"><span class="string">[    5.030230] [BT_RFKILL]: ** disable irq</span></span><br><span class="line"><span class="string">[    5.034167] [BT_RFKILL]: bt_default device registered.</span></span><br><span class="line"><span class="string">[    5.039370] Key type dns_resolver registered</span></span><br><span class="line"><span class="string">[    5.043816] ov13850 3-0010: driver version: 00.01.03</span></span><br><span class="line"><span class="string">[    5.048910] 3-0010 supply avdd not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    5.054865] 3-0010 supply dovdd not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    5.060911] 3-0010 supply dvdd not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    5.066854] ov13850 3-0010: could not get default pinstate</span></span><br><span class="line"><span class="string">[    5.072343] ov13850 3-0010: could not get sleep pinstate</span></span><br><span class="line"><span class="string">[    5.238268] dwmmc_rockchip ff0f0000.dwmmc: Successfully tuned phase to 99</span></span><br><span class="line"><span class="string">[    5.246223] mmc1: new HS200 MMC card at address 0001</span></span><br><span class="line"><span class="string">[    5.254965] mmcblk1: mmc1:0001 DG4008 7.28 GiB </span></span><br><span class="line"><span class="string">[    5.259688] mmcblk1boot0: mmc1:0001 DG4008 partition 1 4.00 MiB</span></span><br><span class="line"><span class="string">[    5.265748] mmcblk1boot1: mmc1:0001 DG4008 partition 2 4.00 MiB</span></span><br><span class="line"><span class="string">[    5.271831] mmcblk1rpmb: mmc1:0001 DG4008 partition 3 4.00 MiB</span></span><br><span class="line"><span class="string">[    5.280358] GPT:Primary header thinks Alt. header is not at the end of the disk.</span></span><br><span class="line"><span class="string">[    5.287766] GPT:15271935 != 15273599</span></span><br><span class="line"><span class="string">[    5.291337] GPT:Alternate GPT header not at the end of the disk.</span></span><br><span class="line"><span class="string">[    5.297334] GPT:15271935 != 15273599</span></span><br><span class="line"><span class="string">[    5.300910] GPT: Use GNU Parted to correct GPT errors.</span></span><br><span class="line"><span class="string">[    5.306072]  mmcblk1: p1 p2 p3 p4 p5 p6 p7 p8 p9</span></span><br><span class="line"><span class="string">[    5.607164] vendor storage:20190527 ret = 0</span></span><br><span class="line"><span class="string">[    6.077452] rk3x-i2c ff150000.i2c: timeout, ipd: 0x00, state: 1</span></span><br><span class="line"><span class="string">[    6.083379] ov13850 3-0010: Unexpected sensor id(000000), ret(-5)</span></span><br><span class="line"><span class="string">[    6.090582] ThumbEE CPU extension supported.</span></span><br><span class="line"><span class="string">[    6.094894] Registering SWP/SWPB emulation handler</span></span><br><span class="line"><span class="string">[    6.100460] Loading compiled-in X.509 certificates</span></span><br><span class="line"><span class="string">[    6.106064] rga2: Driver loaded successfully ver:2.0.00000</span></span><br><span class="line"><span class="string">[    6.111741] rga2: Module initialized.</span></span><br><span class="line"><span class="string">[    6.116339] input: adc-keys as /devices/platform/adc-keys/input/input1</span></span><br><span class="line"><span class="string">[    6.123296] dwmmc_rockchip ff0d000000004000.dwmmc: could not find pctldev for node /syscon@ff770000/mipi-phy-rx0/ports/port@1/endpoint, deferring probe</span></span><br><span class="line"><span class="string">[    6.137241] rockchip-dmc dmc: Get drm_device fail</span></span><br><span class="line"><span class="string">[    6.143207] input: gpio-keys as /devices/platform/gpio-keys/input/input2</span></span><br><span class="line"><span class="string">[    6.150277] dwmmc_rockchip ff0d000000004000.dwmmc: could not find pctldev for node /syscon@ff770000/mipi-phy-rx0/ports/port@1/endpoint, deferring probe</span></span><br><span class="line"><span class="string">[    6.164162] rk808-rtc rk808-rtc: setting system clock to 2013-01-18 08:51:24 UTC (1358499084)</span></span><br><span class="line"><span class="string">[    6.164222] rockchip-dmc dmc: Get drm_device fail</span></span><br><span class="line"><span class="string">[    6.185261] vcc_3g: disabling</span></span><br><span class="line"><span class="string">[    6.188264] vcc_otg_vbus: disabling</span></span><br><span class="line"><span class="string">ú    6.198948] </span></span><br></pre></td></tr></table></figure><p>看不懂，根本看不懂。</p><p>但是既然能进内核了，那么我猜可能是设备树的问题，所以打算修改设备树。</p><p>这里简单说一下我是怎么改设备树的。</p><p>我对比发现，反编译得到的 dts 文件的内容，和一般的 dts 源文件，是有些差异的。</p><p>以 rk3288-evb-rk808-linux.dts 文件为例，可以看到它在头部引入了一些其他的 dtsi 文件，这是一些公用的设备树配置。</p><p>同时这个文件本身也有一些配置，所有这些配置最终合并到一起，编译得到 dtb 文件。</p><p>而我反编译得到的 rk3288-tvi3001u.dts，所有的设备树配置都在这一个文件中。 </p><p>并且他们的节点也有些不一样，以 emmc 为例：</p><p>这是 rk3288.dtsi 中。（rk3288-evb-rk808-linux.dts 文件引入了 rk3288-evb.dtsi，而 rk3288-evb.dtsi 文件又引入了 rk3288.dtsi）</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">emmc: mmc@ff0f0000 &#123;</span><br><span class="line">  compatible = <span class="string">&quot;rockchip,rk3288-dw-mshc&quot;</span>;</span><br><span class="line">  max-frequency = &lt;150000000&gt;;</span><br><span class="line">  clocks = &lt;&amp;cru HCLK_EMMC&gt;, &lt;&amp;cru SCLK_EMMC&gt;,</span><br><span class="line">      &lt;&amp;cru SCLK_EMMC_DRV&gt;, &lt;&amp;cru SCLK_EMMC_SAMPLE&gt;;</span><br><span class="line">  clock-names = <span class="string">&quot;biu&quot;</span>, <span class="string">&quot;ciu&quot;</span>, <span class="string">&quot;ciu-drive&quot;</span>, <span class="string">&quot;ciu-sample&quot;</span>;</span><br><span class="line">  fifo-depth = &lt;0x100&gt;;</span><br><span class="line">  interrupts = &lt;GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH&gt;;</span><br><span class="line">  reg = &lt;0x0 0xff0f0000 0x0 0x4000&gt;;</span><br><span class="line">  resets = &lt;&amp;cru SRST_EMMC&gt;;</span><br><span class="line">  reset-names = <span class="string">&quot;reset&quot;</span>;</span><br><span class="line">  status = <span class="string">&quot;disabled&quot;</span>;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p>这是 rk3288-tvi3001u.dts 中。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">rksdmmc@ff0f0000 &#123;</span><br><span class="line">  compatible = <span class="string">&quot;rockchip,rk_mmc&quot;</span>, <span class="string">&quot;rockchip,rk32xx-sdmmc&quot;</span>;</span><br><span class="line">  reg = &lt;0xff0f0000 0x4000&gt;;</span><br><span class="line">  interrupts = &lt;0x0 0x23 0x4&gt;;</span><br><span class="line">  <span class="comment">#address-cells = &lt;0x1&gt;;</span></span><br><span class="line">  <span class="comment">#size-cells = &lt;0x0&gt;;</span></span><br><span class="line">  clocks = &lt;0x28 0x80 0x6&gt;;</span><br><span class="line">  clock-names = <span class="string">&quot;clk_mmc&quot;</span>, <span class="string">&quot;hclk_mmc&quot;</span>;</span><br><span class="line">  num-slots = &lt;0x1&gt;;</span><br><span class="line">  fifo-depth = &lt;0x100&gt;;</span><br><span class="line">  bus-width = &lt;0x8&gt;;</span><br><span class="line">  tune_regsbase = &lt;0x218&gt;;</span><br><span class="line">  cru_regsbase = &lt;0x1d8&gt;;</span><br><span class="line">  cru_reset_offset = &lt;0x3&gt;;</span><br><span class="line">  clock-frequency = &lt;0xbebc200&gt;;</span><br><span class="line">  clock-freq-min-max = &lt;0x61a80 0xbebc200&gt;;</span><br><span class="line">  supports-highspeed;</span><br><span class="line">  supports-emmc;</span><br><span class="line">  bootpart-no-access;</span><br><span class="line">  ignore-pm-notify;</span><br><span class="line">  keep-power-in-suspend;</span><br><span class="line">  status = <span class="string">&quot;okay&quot;</span>;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p>可以看到第一行中，他们两个 @ 符号后面的地址都是一样的，这个应该是固定的，猜测和芯片有关。</p><p>但是 @ 符号前面的文本不一样，这个应该是自定义的，具体我也不太懂。</p><p>最重要的是，反编译的得到的节点内容，最前面少了一个 <code>emmc: </code>。</p><p>由于我对 dts 文件的写法不是很了解，所以只能结合自己的想法，以及 gpt 给的答案来修改，最终得到修改后的内容如下。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">emmc: mmc@ff0f0000 &#123;</span><br><span class="line">  compatible = <span class="string">&quot;rockchip,rk3288-dw-mshc&quot;</span>;</span><br><span class="line">  reg = &lt;0xff0f0000 0x4000&gt;;</span><br><span class="line">  interrupts = &lt;0x0 0x23 0x4&gt;;</span><br><span class="line">  <span class="comment">#address-cells = &lt;0x1&gt;;</span></span><br><span class="line">  <span class="comment">#size-cells = &lt;0x0&gt;;</span></span><br><span class="line">  clocks = &lt;0x28 0x80 0x6&gt;;</span><br><span class="line">  clock-names = <span class="string">&quot;clk_mmc&quot;</span>, <span class="string">&quot;hclk_mmc&quot;</span>;</span><br><span class="line">  num-slots = &lt;0x1&gt;;</span><br><span class="line">  fifo-depth = &lt;0x100&gt;;</span><br><span class="line">  bus-width = &lt;0x8&gt;;</span><br><span class="line">  tune_regsbase = &lt;0x218&gt;;</span><br><span class="line">  cru_regsbase = &lt;0x1d8&gt;;</span><br><span class="line">  cru_reset_offset = &lt;0x3&gt;;</span><br><span class="line">  clock-frequency = &lt;0xbebc200&gt;;</span><br><span class="line">  clock-freq-min-max = &lt;0x61a80 0xbebc200&gt;;</span><br><span class="line">  supports-highspeed;</span><br><span class="line">  supports-emmc;</span><br><span class="line">  bootpart-no-access;</span><br><span class="line">  ignore-pm-notify;</span><br><span class="line">  keep-power-in-suspend;</span><br><span class="line">  status = <span class="string">&quot;okay&quot;</span>;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p>在第一、二行内容保留，其余替换成反编译得到的内容，其中 compatible 属性似乎和驱动匹配有关。</p><p>将上面内容替换掉 rk3288.dtsi 的 emmc 节点。</p><p>不知道这样改对不对？还望有懂的大佬可以告知。</p><p>期间我还尝试改了 wifi、蓝牙、hdmi 等节点，几乎都是这么改的。</p><p>经过我多次尝试，编译，刷内核，改设备树，编译，刷内核······</p><p>结果依旧是进不去系统。</p><p>当时编译的时候，一直是直接 <code>./build.sh</code> 一键编译，然后将 <code>/data/rk3288_linux_release_v2.5.0a_20230510/rockdev/pack</code> 下的完整固件刷入，但是这样太慢了。</p><p>后面发现，其实应该只要 <code>./build.sh kernel</code> 编译内核就好了，然后将 <code>/data/rk3288_linux_release_v2.5.0a_20230510/rockdev</code> 下的 <code>boot.img</code> 刷入指定地址就行。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/Firefly-RK3288-SDK-Complied-Output.png"/></div></div><p>如下图，只刷入 <code>MiniLoaderAll.bin</code> 和 <code>boot.img</code>。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/RK3288-Flash-BootImg.png"/></div></div><h3 style="text-align:center">6. 曲线救国——凤凰 OS</h3><p>好不容易可以启动内核了，结果却还是没法进系统，我不经有些烦躁。</p><p>一边觉得烦，我又一边继续搜 RK3288、Firefly 之类的，期待能找到解决办法，然后就搜出这么一条。</p><p><a href="https://dev.t-firefly.com/thread-10678-1-1.html">https://dev.t-firefly.com/thread-10678-1-1.html</a></p><p>当时看到这个的时候，我真觉得这个凤凰 OS 的 UI 很好看。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/PhoenixOS.png"/></div></div><p>于是我就想，不编译 Linux 了，编译个凤凰 OS 吧。</p><p>因为我想着，既然有固件，那应该也有源码，应该可以尝试编译一下。</p><p>但是很遗憾的是，我找到了 Firefly-RK3288 的凤凰 OS 固件，但没有找到它的源码相关的信息。</p><p>抱着试一试的心态，我直接刷入 Firefly 的凤凰 OS，结果没法正常启动。</p><p>没办法，看来还是得自己编译一个固件才能用。</p><p>既然如此，我干脆尝试编译一个 Android 固件吧！</p><p>于是我又下载了 Firefly 的 Android 5.1 SDK，然后搭建环境，尝试编译。</p><p>可惜，我折腾了好久，最后也成功编译出了固件，但是一样进不去系统，无限重启。</p><p>不管我怎么改设备树，重新编译并刷入，都依旧如此。</p><p>所以自己编译 Android 固件这个想法也只好放弃。</p><p>我继续查看 Firefly-RK3288 的凤凰 OS 相关信息，发现它的 Android 系统版本也是 5.1。</p><p>这时我突然想到，凤凰 OS 其实应该也就是基于 Android 为 Firefly-RK3288 而定制的一个 ROM？</p><p>而据我所知，ROM 其实就是指安卓系统，对应的就是 Android 的 System 分区，那我是不是可以通过替换 System 分区，让我的板子也用上凤凰 OS？</p><p>毕竟这块板子原厂固件也是 Android 5.1，而且 CPU 都是 RK3288。</p><p>我觉得可行，于是就去问 ChatGPT，然后 GPT 告诉我需要替换三个分区。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/GPT4-Answer-Of-How-To-Replace-RK3288-ROM.png"/></div></div><p>将凤凰 OS 固件用 RKDevTool 解包，得到各个分区的镜像。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/Firefly-PhoenixOS-Unpack-Images.png"/></div></div><p>然后刷入原厂各个分区镜像，将其中的 <code>system.img</code>、<code>boot.img</code>、<code>recovery.img</code> 替换为从凤凰 OS 解包出的对应文件。</p><p>如下图。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/Flash-PhoenixOS-In-RK3288.png"/></div></div><p>值得一提的是，<code>userdata.img</code> 无需刷入，刷入会导致无法进入系统。</p><p>刷完之后，重启查看日志，发现没有报错。</p><p>接上显示器，显示 <code>System initializing, please wait...</code></p><p>等待一会儿后，会进入系统欢迎页面。</p><p>由于不支持 USB 鼠标，需要通过蓝牙连接鼠标，所以我通过 Scrcpy 远控，配置好蓝牙鼠标，才能正常使用系统。</p><p><strong>Scrcpy</strong>：<a href="https://gitee.com/mirrors/scrcpy">https://gitee.com/mirrors/scrcpy</a></p><p>真不错。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/PhoenixOS-HDMI.png"/></div></div><h3 style="text-align:center">7. 升级 Kernel</h3><p>虽然已经有了凤凰 OS，但我还是不甘心。</p><p>还是想编译出一个 Linux 的固件。</p><p>于是我又不停改设备树，编译，刷内核，改设备树，编译，刷内核······</p><p>经过多次尝试，终于出现了一些转机。</p><p>在某一次改完设备树刷入内核后，日志多了一些报错信息。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br><span class="line">385</span><br><span class="line">386</span><br><span class="line">387</span><br><span class="line">388</span><br><span class="line">389</span><br><span class="line">390</span><br><span class="line">391</span><br><span class="line">392</span><br><span class="line">393</span><br><span class="line">394</span><br><span class="line">395</span><br><span class="line">396</span><br><span class="line">397</span><br><span class="line">398</span><br><span class="line">399</span><br><span class="line">400</span><br><span class="line">401</span><br><span class="line">402</span><br><span class="line">403</span><br><span class="line">404</span><br><span class="line">405</span><br><span class="line">406</span><br><span class="line">407</span><br><span class="line">408</span><br><span class="line">409</span><br><span class="line">410</span><br><span class="line">411</span><br><span class="line">412</span><br><span class="line">413</span><br><span class="line">414</span><br><span class="line">415</span><br><span class="line">416</span><br><span class="line">417</span><br><span class="line">418</span><br><span class="line">419</span><br><span class="line">420</span><br><span class="line">421</span><br><span class="line">422</span><br><span class="line">423</span><br><span class="line">424</span><br><span class="line">425</span><br><span class="line">426</span><br><span class="line">427</span><br><span class="line">428</span><br><span class="line">429</span><br><span class="line">430</span><br><span class="line">431</span><br><span class="line">432</span><br><span class="line">433</span><br><span class="line">434</span><br><span class="line">435</span><br><span class="line">436</span><br><span class="line">437</span><br><span class="line">438</span><br><span class="line">439</span><br><span class="line">440</span><br><span class="line">441</span><br><span class="line">442</span><br><span class="line">443</span><br><span class="line">444</span><br><span class="line">445</span><br><span class="line">446</span><br><span class="line">447</span><br><span class="line">448</span><br><span class="line">449</span><br><span class="line">450</span><br><span class="line">451</span><br><span class="line">452</span><br><span class="line">453</span><br><span class="line">454</span><br><span class="line">455</span><br><span class="line">456</span><br><span class="line">457</span><br><span class="line">458</span><br><span class="line">459</span><br><span class="line">460</span><br><span class="line">461</span><br><span class="line">462</span><br><span class="line">463</span><br><span class="line">464</span><br><span class="line">465</span><br><span class="line">466</span><br><span class="line">467</span><br><span class="line">468</span><br><span class="line">469</span><br><span class="line">470</span><br><span class="line">471</span><br><span class="line">472</span><br><span class="line">473</span><br><span class="line">474</span><br><span class="line">475</span><br><span class="line">476</span><br><span class="line">477</span><br><span class="line">478</span><br><span class="line">479</span><br><span class="line">480</span><br><span class="line">481</span><br><span class="line">482</span><br><span class="line">483</span><br><span class="line">484</span><br><span class="line">485</span><br><span class="line">486</span><br><span class="line">487</span><br><span class="line">488</span><br><span class="line">489</span><br><span class="line">490</span><br><span class="line">491</span><br><span class="line">492</span><br><span class="line">493</span><br><span class="line">494</span><br><span class="line">495</span><br><span class="line">496</span><br><span class="line">497</span><br><span class="line">498</span><br><span class="line">499</span><br><span class="line">500</span><br><span class="line">501</span><br><span class="line">502</span><br><span class="line">503</span><br><span class="line">504</span><br><span class="line">505</span><br><span class="line">506</span><br><span class="line">507</span><br><span class="line">508</span><br><span class="line">509</span><br><span class="line">510</span><br><span class="line">511</span><br><span class="line">512</span><br><span class="line">513</span><br><span class="line">514</span><br><span class="line">515</span><br><span class="line">516</span><br><span class="line">517</span><br><span class="line">518</span><br><span class="line">519</span><br><span class="line">520</span><br><span class="line">521</span><br><span class="line">522</span><br><span class="line">523</span><br><span class="line">524</span><br><span class="line">525</span><br><span class="line">526</span><br><span class="line">527</span><br><span class="line">528</span><br><span class="line">529</span><br><span class="line">530</span><br><span class="line">531</span><br><span class="line">532</span><br><span class="line">533</span><br><span class="line">534</span><br><span class="line">535</span><br><span class="line">536</span><br><span class="line">537</span><br><span class="line">538</span><br><span class="line">539</span><br><span class="line">540</span><br><span class="line">541</span><br><span class="line">542</span><br><span class="line">543</span><br><span class="line">544</span><br><span class="line">545</span><br><span class="line">546</span><br><span class="line">547</span><br><span class="line">548</span><br><span class="line">549</span><br><span class="line">550</span><br><span class="line">551</span><br><span class="line">552</span><br><span class="line">553</span><br><span class="line">554</span><br><span class="line">555</span><br><span class="line">556</span><br><span class="line">557</span><br><span class="line">558</span><br><span class="line">559</span><br><span class="line">560</span><br><span class="line">561</span><br><span class="line">562</span><br><span class="line">563</span><br><span class="line">564</span><br><span class="line">565</span><br><span class="line">566</span><br><span class="line">567</span><br><span class="line">568</span><br><span class="line">569</span><br><span class="line">570</span><br><span class="line">571</span><br><span class="line">572</span><br><span class="line">573</span><br><span class="line">574</span><br><span class="line">575</span><br><span class="line">576</span><br><span class="line">577</span><br><span class="line">578</span><br><span class="line">579</span><br><span class="line">580</span><br><span class="line">581</span><br><span class="line">582</span><br><span class="line">583</span><br><span class="line">584</span><br><span class="line">585</span><br><span class="line">586</span><br><span class="line">587</span><br><span class="line">588</span><br><span class="line">589</span><br><span class="line">590</span><br><span class="line">591</span><br><span class="line">592</span><br><span class="line">593</span><br><span class="line">594</span><br><span class="line">595</span><br><span class="line">596</span><br><span class="line">597</span><br><span class="line">598</span><br><span class="line">599</span><br><span class="line">600</span><br><span class="line">601</span><br><span class="line">602</span><br><span class="line">603</span><br><span class="line">604</span><br><span class="line">605</span><br><span class="line">606</span><br><span class="line">607</span><br><span class="line">608</span><br><span class="line">609</span><br><span class="line">610</span><br><span class="line">611</span><br><span class="line">612</span><br><span class="line">613</span><br><span class="line">614</span><br><span class="line">615</span><br><span class="line">616</span><br><span class="line">617</span><br><span class="line">618</span><br><span class="line">619</span><br><span class="line">620</span><br><span class="line">621</span><br><span class="line">622</span><br><span class="line">623</span><br><span class="line">624</span><br><span class="line">625</span><br><span class="line">626</span><br><span class="line">627</span><br><span class="line">628</span><br><span class="line">629</span><br><span class="line">630</span><br><span class="line">631</span><br><span class="line">632</span><br><span class="line">633</span><br><span class="line">634</span><br><span class="line">635</span><br><span class="line">636</span><br><span class="line">637</span><br><span class="line">638</span><br><span class="line">639</span><br><span class="line">640</span><br><span class="line">641</span><br><span class="line">642</span><br><span class="line">643</span><br><span class="line">644</span><br><span class="line">645</span><br><span class="line">646</span><br><span class="line">647</span><br><span class="line">648</span><br><span class="line">649</span><br><span class="line">650</span><br><span class="line">651</span><br><span class="line">652</span><br><span class="line">653</span><br><span class="line">654</span><br><span class="line">655</span><br><span class="line">656</span><br><span class="line">657</span><br><span class="line">658</span><br><span class="line">659</span><br><span class="line">660</span><br><span class="line">661</span><br><span class="line">662</span><br><span class="line">663</span><br><span class="line">664</span><br><span class="line">665</span><br><span class="line">666</span><br><span class="line">667</span><br><span class="line">668</span><br><span class="line">669</span><br><span class="line">670</span><br><span class="line">671</span><br><span class="line">672</span><br><span class="line">673</span><br><span class="line">674</span><br><span class="line">675</span><br><span class="line">676</span><br><span class="line">677</span><br><span class="line">678</span><br><span class="line">679</span><br><span class="line">680</span><br><span class="line">681</span><br><span class="line">682</span><br><span class="line">683</span><br><span class="line">684</span><br><span class="line">685</span><br><span class="line">686</span><br><span class="line">687</span><br><span class="line">688</span><br><span class="line">689</span><br><span class="line">690</span><br><span class="line">691</span><br><span class="line">692</span><br><span class="line">693</span><br><span class="line">694</span><br><span class="line">695</span><br><span class="line">696</span><br><span class="line">697</span><br><span class="line">698</span><br><span class="line">699</span><br><span class="line">700</span><br><span class="line">701</span><br><span class="line">702</span><br><span class="line">703</span><br><span class="line">704</span><br><span class="line">705</span><br><span class="line">706</span><br><span class="line">707</span><br><span class="line">708</span><br><span class="line">709</span><br><span class="line">710</span><br><span class="line">711</span><br><span class="line">712</span><br><span class="line">713</span><br><span class="line">714</span><br><span class="line">715</span><br><span class="line">716</span><br><span class="line">717</span><br><span class="line">718</span><br><span class="line">719</span><br><span class="line">720</span><br><span class="line">721</span><br><span class="line">722</span><br><span class="line">723</span><br><span class="line">724</span><br><span class="line">725</span><br><span class="line">726</span><br><span class="line">727</span><br><span class="line">728</span><br><span class="line">729</span><br><span class="line">730</span><br><span class="line">731</span><br><span class="line">732</span><br><span class="line">733</span><br><span class="line">734</span><br><span class="line">735</span><br><span class="line">736</span><br><span class="line">737</span><br><span class="line">738</span><br><span class="line">739</span><br><span class="line">740</span><br><span class="line">741</span><br><span class="line">742</span><br><span class="line">743</span><br><span class="line">744</span><br><span class="line">745</span><br><span class="line">746</span><br><span class="line">747</span><br><span class="line">748</span><br><span class="line">749</span><br><span class="line">750</span><br><span class="line">751</span><br><span class="line">752</span><br><span class="line">753</span><br><span class="line">754</span><br><span class="line">755</span><br><span class="line">756</span><br><span class="line">757</span><br><span class="line">758</span><br><span class="line">759</span><br><span class="line">760</span><br><span class="line">761</span><br><span class="line">762</span><br><span class="line">763</span><br><span class="line">764</span><br><span class="line">765</span><br><span class="line">766</span><br><span class="line">767</span><br><span class="line">768</span><br><span class="line">769</span><br><span class="line">770</span><br><span class="line">771</span><br><span class="line">772</span><br><span class="line">773</span><br><span class="line">774</span><br><span class="line">775</span><br><span class="line">776</span><br><span class="line">777</span><br><span class="line">778</span><br><span class="line">779</span><br><span class="line">780</span><br><span class="line">781</span><br><span class="line">782</span><br><span class="line">783</span><br><span class="line">784</span><br><span class="line">785</span><br><span class="line">786</span><br><span class="line">787</span><br><span class="line">788</span><br><span class="line">789</span><br><span class="line">790</span><br><span class="line">791</span><br><span class="line">792</span><br><span class="line">793</span><br><span class="line">794</span><br><span class="line">795</span><br><span class="line">796</span><br><span class="line">797</span><br><span class="line">798</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">U-Boot 2017.09(u-boot commit <span class="built_in">id</span>: e4da79f87a88e70b076e97de82fc8ece3b6d6ea9)(sdk version: rk3288_linux_release_20220304_v2.5.0a.xml)-ge4da79f <span class="comment">#root (Aug 10 2024 - 00:14:55 +0800)</span></span><br><span class="line"></span><br><span class="line">Model: Evb-RK3288</span><br><span class="line">PreSerial: 2, raw, 0xff690000</span><br><span class="line">DRAM:  2 GiB</span><br><span class="line">Sysmem: init</span><br><span class="line">Relocation Offset: 00000000</span><br><span class="line">Relocation fdt: 7bdd3950 - 7bdd4de5</span><br><span class="line">CR: M/C/I</span><br><span class="line">Using default environment</span><br><span class="line"></span><br><span class="line">dwmmc@ff0c0000: 1, dwmmc@ff0f0000: 0</span><br><span class="line">Bootdev(atags): mmc 0</span><br><span class="line">MMC0: High Speed, 52Mhz</span><br><span class="line">PartType: EFI</span><br><span class="line">boot mode: recovery (misc)</span><br><span class="line">Found DTB <span class="keyword">in</span> recovery part</span><br><span class="line">DTB: rk-kernel.dtb</span><br><span class="line">HASH(c): OK</span><br><span class="line">CLK: (uboot. arm: enter 1000000 KHz, init 1000000 KHz, kernel 0N/A)</span><br><span class="line">  apll 1000000 KHz</span><br><span class="line">  dpll 396000 KHz</span><br><span class="line">  cpll 24000 KHz</span><br><span class="line">  gpll 594000 KHz</span><br><span class="line">  npll 24000 KHz</span><br><span class="line">  aclk_bus 198000 KHz</span><br><span class="line">Net:   Net Initialization Skipped</span><br><span class="line">No ethernet found.</span><br><span class="line">Hit key to stop autoboot(<span class="string">&#x27;CTRL+C&#x27;</span>):  0 </span><br><span class="line">ANDROID: reboot reason: <span class="string">&quot;recovery&quot;</span></span><br><span class="line">optee api revision: 2.0</span><br><span class="line">TEEC: Waring: Could not find security partition</span><br><span class="line">Not AVB images, AVB skip</span><br><span class="line">Booting ZIMAGE kernel at 0x02008000(Uncompress to 0) with fdt at 0x08300000...</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">Fdt Ramdisk skip relocation</span><br><span class="line"><span class="comment">## Booting Android Image at 0x02007800 ...</span></span><br><span class="line">Kernel load addr 0x02008000 size 7633 KiB</span><br><span class="line">RAM disk load addr 0x0a200000 size 6924 KiB</span><br><span class="line"><span class="comment">## Flattened Device Tree blob at 0x08300000</span></span><br><span class="line">   Booting using the fdt blob at 0x08300000</span><br><span class="line">   XIP Kernel Image from 0x02008000 to 0x02008000 ... OK</span><br><span class="line">  <span class="string">&#x27;reserved-memory&#x27;</span> dma-unusable@fe000000: addr=fe000000 size=1000000</span><br><span class="line">  <span class="string">&#x27;reserved-memory&#x27;</span> ramoops@00000000: addr=8000000 size=f0000</span><br><span class="line">   Using Device Tree <span class="keyword">in</span> place at 08300000, end 083178e5</span><br><span class="line">Adding bank: 0x00000000 - 0x08400000 (size: 0x08400000)</span><br><span class="line">Adding bank: 0x09310000 - 0x80000000 (size: 0x76cf0000)</span><br><span class="line">Total: 731.341 ms</span><br><span class="line"></span><br><span class="line">Starting kernel ...</span><br><span class="line"></span><br><span class="line">[    0.000000] Booting Linux on physical CPU 0x500</span><br><span class="line">[    0.000000] Initializing cgroup subsys cpuset</span><br><span class="line">[    0.000000] Initializing cgroup subsys cpu</span><br><span class="line">[    0.000000] Initializing cgroup subsys cpuacct</span><br><span class="line">[    0.000000] Linux version 4.4.194 (root@ubuntu) (kernel commit <span class="built_in">id</span>: ebb6f60626788430b3eebadd4d1fe01365685be8) (sdk version: rk3288_linux_release_20220304_v2.5.0a.xml) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) ) <span class="comment">#5 SMP Wed Aug 7 21:42:52 CST 2024</span></span><br><span class="line">[    0.000000] CPU: ARMv7 Processor [410fc0d1] revision 1 (ARMv7), cr=10c5387d</span><br><span class="line">[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache</span><br><span class="line">[    0.000000] Machine model: rockchip,rk3288-evb-rk808-linux</span><br><span class="line">[    0.000000] Reserved memory: failed to reserve memory <span class="keyword">for</span> node <span class="string">&#x27;drm-logo@00000000&#x27;</span>: base 0x00000000, size 0 MiB</span><br><span class="line">[    0.000000] cma: Reserved 16 MiB at 0x7f000000</span><br><span class="line">[    0.000000] Memory policy: Data cache writealloc</span><br><span class="line">[    0.000000] psci: probing <span class="keyword">for</span> conduit method from DT.</span><br><span class="line">[    0.000000] psci: PSCIv65535.65535 detected <span class="keyword">in</span> firmware.</span><br><span class="line">[    0.000000] psci: Using standard PSCI v0.2 <span class="keyword">function</span> IDs</span><br><span class="line">[    0.000000] psci: MIGRATE_INFO_TYPE not supported.</span><br><span class="line">[    0.000000] PERCPU: Embedded 14 pages/cpu @eef77000 s24728 r8192 d24424 u57344</span><br><span class="line">[    0.000000] Built 1 zonelists <span class="keyword">in</span> Zone order, mobility grouping on.  Total pages: 518896</span><br><span class="line">[    0.000000] Kernel <span class="built_in">command</span> line: storagemedia=emmc androidboot.storagemedia=emmc androidboot.mode=normal  androidboot.verifiedbootstate=orange androidboot.slot_suffix=  earlyprintk rw rootwait console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=ext4</span><br><span class="line">[    0.000000] PID <span class="built_in">hash</span> table entries: 4096 (order: 2, 16384 bytes)</span><br><span class="line">[    0.000000] Dentry cache <span class="built_in">hash</span> table entries: 131072 (order: 7, 524288 bytes)</span><br><span class="line">[    0.000000] Inode-cache <span class="built_in">hash</span> table entries: 65536 (order: 6, 262144 bytes)</span><br><span class="line">[    0.000000] Memory: 2019816K/2081728K available (12288K kernel code, 915K rwdata, 3324K rodata, 1024K init, 567K bss, 45528K reserved, 16384K cma-reserved, 1294336K highmem)</span><br><span class="line">[    0.000000] Virtual kernel memory layout:</span><br><span class="line">[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)</span><br><span class="line">[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)</span><br><span class="line">[    0.000000]     vmalloc : 0xf0800000 - 0xff800000   ( 240 MB)</span><br><span class="line">[    0.000000]     lowmem  : 0xc0000000 - 0xf0000000   ( 768 MB)</span><br><span class="line">[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)</span><br><span class="line">[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)</span><br><span class="line">[    0.000000]       .text : 0xc0008000 - 0xc0d00000   (13280 kB)</span><br><span class="line">[    0.000000]       .init : 0xc1200000 - 0xc1300000   (1024 kB)</span><br><span class="line">[    0.000000]       .data : 0xc1300000 - 0xc13e4d2c   ( 916 kB)</span><br><span class="line">[    0.000000]        .bss : 0xc13e6000 - 0xc1473e50   ( 568 kB)</span><br><span class="line">[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1</span><br><span class="line">[    0.000000] Hierarchical RCU implementation.</span><br><span class="line">[    0.000000] Build-time adjustment of leaf fanout to 32.</span><br><span class="line">[    0.000000] NR_IRQS:16 nr_irqs:16 16</span><br><span class="line">[    0.000000] Architected cp15 timer(s) running at 24.00MHz (phys).</span><br><span class="line">[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns</span><br><span class="line">[    0.000009] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns</span><br><span class="line">[    0.000030] Switching to timer-based delay loop, resolution 41ns</span><br><span class="line">[    0.004032] Console: colour dummy device 80x30</span><br><span class="line">[    0.004077] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)</span><br><span class="line">[    0.004102] pid_max: default: 32768 minimum: 301</span><br><span class="line">[    0.004254] Security Framework initialized</span><br><span class="line">[    0.004272] Yama: becoming mindful.</span><br><span class="line">[    0.004367] Mount-cache <span class="built_in">hash</span> table entries: 2048 (order: 1, 8192 bytes)</span><br><span class="line">[    0.004390] Mountpoint-cache <span class="built_in">hash</span> table entries: 2048 (order: 1, 8192 bytes)</span><br><span class="line">[    0.005554] Initializing cgroup subsys devices</span><br><span class="line">[    0.005588] Initializing cgroup subsys freezer</span><br><span class="line">[    0.005648] CPU: Testing write buffer coherency: ok</span><br><span class="line">[    0.005704] ftrace: allocating 42944 entries <span class="keyword">in</span> 126 pages</span><br><span class="line">[    0.133493] CPU0: update cpu_capacity 430</span><br><span class="line">[    0.133515] CPU0: thread -1, cpu 0, socket 5, mpidr 80000500</span><br><span class="line">[    0.133615] Setting up static identity map <span class="keyword">for</span> 0x100000 - 0x100058</span><br><span class="line">[    0.136924] CPU1: update cpu_capacity 430</span><br><span class="line">[    0.136934] CPU1: thread -1, cpu 1, socket 5, mpidr 80000501</span><br><span class="line">[    0.138142] CPU2: update cpu_capacity 430</span><br><span class="line">[    0.138151] CPU2: thread -1, cpu 2, socket 5, mpidr 80000502</span><br><span class="line">[    0.139383] CPU3: update cpu_capacity 430</span><br><span class="line">[    0.139392] CPU3: thread -1, cpu 3, socket 5, mpidr 80000503</span><br><span class="line">[    0.139554] Brought up 4 CPUs</span><br><span class="line">[    0.139597] SMP: Total of 4 processors activated (192.00 BogoMIPS).</span><br><span class="line">[    0.139607] CPU: All CPU(s) started <span class="keyword">in</span> SVC mode.</span><br><span class="line">[    0.141706] devtmpfs: initialized</span><br><span class="line">[    0.174279] VFP support v0.3: implementor 41 architecture 3 part 30 variant d rev 0</span><br><span class="line">[    0.174852] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns</span><br><span class="line">[    0.174895] futex <span class="built_in">hash</span> table entries: 1024 (order: 4, 65536 bytes)</span><br><span class="line">[    0.176439] pinctrl core: initialized pinctrl subsystem</span><br><span class="line">[    0.178074] NET: Registered protocol family 16</span><br><span class="line">[    0.180738] DMA: preallocated 256 KiB pool <span class="keyword">for</span> atomic coherent allocations</span><br><span class="line">[    0.203330] cpuidle: using governor ladder</span><br><span class="line">[    0.233379] cpuidle: using governor menu</span><br><span class="line">[    0.233431] Registered FIQ <span class="built_in">tty</span> driver</span><br><span class="line">[    0.287422] console [pstore-1] enabled</span><br><span class="line">[    0.287437] pstore: Registered ramoops as persistent store backend</span><br><span class="line">[    0.287452] ramoops: attached 0xf0000@0x8000000, ecc: 0/0</span><br><span class="line">[    0.289860] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.</span><br><span class="line">[    0.289881] hw-breakpoint: maximum watchpoint size is 4 bytes.</span><br><span class="line">[    0.291061] fiq debugger fiq mode enabled</span><br><span class="line">[    0.782867] console [ttyFIQ0] enabled</span><br><span class="line">[    0.786921] Registered fiq debugger ttyFIQ0</span><br><span class="line">[    0.908737] vcc18_dvp: regulator get failed, ret=-517</span><br><span class="line">[    0.915542] iommu: Adding device ff910000.isp to group 0</span><br><span class="line">[    0.921012] iommu: Adding device ff910000.rkisp1 to group 1</span><br><span class="line">[    0.926801] iommu: Adding device ff930000.vop to group 2</span><br><span class="line">[    0.932266] iommu: Adding device ff940000.vop to group 3</span><br><span class="line">[    0.937792] iommu: Adding device ff9a0000.vpu-service to group 4</span><br><span class="line">[    0.943970] iommu: Adding device ff9c0000.hevc-service to group 5</span><br><span class="line">[    0.950987] rk_iommu ff914000.iommu: can<span class="string">&#x27;t get sclk</span></span><br><span class="line"><span class="string">[    0.956548] rk_iommu ff930300.iommu: can&#x27;</span>t get sclk</span><br><span class="line">[    0.961930] rk_iommu ff940300.iommu: can<span class="string">&#x27;t get sclk</span></span><br><span class="line"><span class="string">[    0.967253] rk_iommu ff9a0800.iommu: can&#x27;</span>t get sclk</span><br><span class="line">[    0.972741] rk_iommu ff9c0440.iommu: can<span class="string">&#x27;t get sclk</span></span><br><span class="line"><span class="string">[    0.978541] SCSI subsystem initialized</span></span><br><span class="line"><span class="string">[    0.982750] usbcore: registered new interface driver usbfs</span></span><br><span class="line"><span class="string">[    0.988355] usbcore: registered new interface driver hub</span></span><br><span class="line"><span class="string">[    0.993870] usbcore: registered new device driver usb</span></span><br><span class="line"><span class="string">[    0.999157] media: Linux media interface: v0.10</span></span><br><span class="line"><span class="string">[    1.003813] Linux video capture interface: v2.00</span></span><br><span class="line"><span class="string">[    1.008604] pps_core: LinuxPPS API ver. 1 registered</span></span><br><span class="line"><span class="string">[    1.013574] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti &lt;giometti@linux.it&gt;</span></span><br><span class="line"><span class="string">[    1.022779] PTP clock support registered</span></span><br><span class="line"><span class="string">[    1.029361] Advanced Linux Sound Architecture Driver Initialized.</span></span><br><span class="line"><span class="string">[    1.036548] Bluetooth: Core ver 2.21</span></span><br><span class="line"><span class="string">[    1.040192] NET: Registered protocol family 31</span></span><br><span class="line"><span class="string">[    1.044643] Bluetooth: HCI device and connection manager initialized</span></span><br><span class="line"><span class="string">[    1.051056] Bluetooth: HCI socket layer initialized</span></span><br><span class="line"><span class="string">[    1.055948] Bluetooth: L2CAP socket layer initialized</span></span><br><span class="line"><span class="string">[    1.061116] Bluetooth: SCO socket layer initialized</span></span><br><span class="line"><span class="string">[    1.067661] rockchip-cpuinfo cpuinfo: Serial: adb08770ad432f7d</span></span><br><span class="line"><span class="string">[    1.075275] clocksource: Switched to clocksource arch_sys_counter</span></span><br><span class="line"><span class="string">[    1.168782] /thermal-zones/soc-thermal/cooling-maps/map1: could not get #cooling-cells for /gpu@ffa30000</span></span><br><span class="line"><span class="string">[    1.178320] missing cooling_device property</span></span><br><span class="line"><span class="string">[    1.182520] failed to build thermal zone soc-thermal: -22</span></span><br><span class="line"><span class="string">[    1.188627] NET: Registered protocol family 2</span></span><br><span class="line"><span class="string">[    1.193916] TCP established hash table entries: 8192 (order: 3, 32768 bytes)</span></span><br><span class="line"><span class="string">[    1.201131] TCP bind hash table entries: 8192 (order: 5, 163840 bytes)</span></span><br><span class="line"><span class="string">[    1.207951] TCP: Hash tables configured (established 8192 bind 8192)</span></span><br><span class="line"><span class="string">[    1.214399] UDP hash table entries: 512 (order: 2, 24576 bytes)</span></span><br><span class="line"><span class="string">[    1.220427] UDP-Lite hash table entries: 512 (order: 2, 24576 bytes)</span></span><br><span class="line"><span class="string">[    1.227176] NET: Registered protocol family 1</span></span><br><span class="line"><span class="string">[    1.232053] RPC: Registered named UNIX socket transport module.</span></span><br><span class="line"><span class="string">[    1.238034] RPC: Registered udp transport module.</span></span><br><span class="line"><span class="string">[    1.242748] RPC: Registered tcp transport module.</span></span><br><span class="line"><span class="string">[    1.247487] RPC: Registered tcp NFSv4.1 backchannel transport module.</span></span><br><span class="line"><span class="string">[    1.254257] Trying to unpack rootfs image as initramfs...</span></span><br><span class="line"><span class="string">[    1.980366] Freeing initrd memory: 6924K</span></span><br><span class="line"><span class="string">[    1.985961] hw perfevents: enabled with armv7_cortex_a12 PMU driver, 7 counters available</span></span><br><span class="line"><span class="string">[    1.997841] Initialise system trusted keyring</span></span><br><span class="line"><span class="string">[    2.018032] squashfs: version 4.0 (2009/01/31) Phillip Lougher</span></span><br><span class="line"><span class="string">[    2.027172] NFS: Registering the id_resolver key type</span></span><br><span class="line"><span class="string">[    2.032271] Key type id_resolver registered</span></span><br><span class="line"><span class="string">[    2.036528] Key type id_legacy registered</span></span><br><span class="line"><span class="string">[    2.040581] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).</span></span><br><span class="line"><span class="string">[    2.048059] fuse init (API version 7.23)</span></span><br><span class="line"><span class="string">[    2.061644] NET: Registered protocol family 38</span></span><br><span class="line"><span class="string">[    2.066190] Key type asymmetric registered</span></span><br><span class="line"><span class="string">[    2.070302] Asymmetric key parser &#x27;</span>x509<span class="string">&#x27; registered</span></span><br><span class="line"><span class="string">[    2.075337] bounce: pool size: 64 pages</span></span><br><span class="line"><span class="string">[    2.079502] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)</span></span><br><span class="line"><span class="string">[    2.086951] io scheduler noop registered</span></span><br><span class="line"><span class="string">[    2.090892] io scheduler deadline registered</span></span><br><span class="line"><span class="string">[    2.095224] io scheduler cfq registered (default)</span></span><br><span class="line"><span class="string">[    2.106213] rockchip-dp-phy ff770000.syscon:edp-phy: No edp_24m reset control specified</span></span><br><span class="line"><span class="string">[    2.116573] backlight supply power not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    2.123829] rk-vcodec ff9a0000.vpu-service: no regulator for vcodec</span></span><br><span class="line"><span class="string">[    2.130588] rk-vcodec ff9a0000.vpu-service: probe device</span></span><br><span class="line"><span class="string">[    2.136408] rk-vcodec ff9a0000.vpu-service: drm allocator with mmu enabled</span></span><br><span class="line"><span class="string">[    2.144566] rk-vcodec ff9a0000.vpu-service: could not find power_model node</span></span><br><span class="line"><span class="string">[    2.151592] rk-vcodec ff9a0000.vpu-service: init success</span></span><br><span class="line"><span class="string">[    2.157504] rk-vcodec ff9c0000.hevc-service: no regulator for vcodec</span></span><br><span class="line"><span class="string">[    2.164354] rk-vcodec ff9c0000.hevc-service: probe device</span></span><br><span class="line"><span class="string">[    2.170239] rk-vcodec ff9c0000.hevc-service: drm allocator with mmu enabled</span></span><br><span class="line"><span class="string">[    2.178177] rk-vcodec ff9c0000.hevc-service: could not find power_model node</span></span><br><span class="line"><span class="string">[    2.185237] rk-vcodec ff9c0000.hevc-service: init success</span></span><br><span class="line"><span class="string">[    2.194655] dma-pl330 ff250000.dma-controller: Loaded driver for PL330 DMAC-241330</span></span><br><span class="line"><span class="string">[    2.202294] dma-pl330 ff250000.dma-controller: DBUFF-128x8bytes Num_Chans-8 Num_Peri-20 Num_Events-16</span></span><br><span class="line"><span class="string">[    2.213075] dma-pl330 ff600000.dma-controller: Loaded driver for PL330 DMAC-241330</span></span><br><span class="line"><span class="string">[    2.220731] dma-pl330 ff600000.dma-controller: DBUFF-64x8bytes Num_Chans-5 Num_Peri-6 Num_Events-10</span></span><br><span class="line"><span class="string">[    2.232214] rockchip-system-monitor rockchip-system-monitor: system monitor probe</span></span><br><span class="line"><span class="string">[    2.240336] pwm-regulator vdd-logic: Failed to get PWM: -517</span></span><br><span class="line"><span class="string">[    2.246734] Serial: 8250/16550 driver, 5 ports, IRQ sharing disabled</span></span><br><span class="line"><span class="string">[    2.254177] ff180000.serial: ttyS0 at MMIO 0xff180000 (irq = 37, base_baud = 1500000) is a 16550A</span></span><br><span class="line"><span class="string">[    2.265759] [drm] Initialized drm 1.1.0 20060810</span></span><br><span class="line"><span class="string">[    2.278776] usbcore: registered new interface driver udl</span></span><br><span class="line"><span class="string">[    2.286889] panel-simple edp-panel: failed to get power regulator: -517</span></span><br><span class="line"><span class="string">[    2.295691] mali ffa30000.gpu: Failed to get regulator</span></span><br><span class="line"><span class="string">[    2.300846] mali ffa30000.gpu: Power control initialization failed</span></span><br><span class="line"><span class="string">[    2.309057] brd: module loaded</span></span><br><span class="line"><span class="string">[    2.323311] loop: module loaded</span></span><br><span class="line"><span class="string">[    2.327850] zram: Added device: zram0</span></span><br><span class="line"><span class="string">[    2.331575] lkdtm: No crash points registered, enable through debugfs</span></span><br><span class="line"><span class="string">[    2.339893] tun: Universal TUN/TAP device driver, 1.6</span></span><br><span class="line"><span class="string">[    2.344959] tun: (C) 1999-2004 Max Krasnyansky &lt;maxk@qualcomm.com&gt;</span></span><br><span class="line"><span class="string">[    2.353622] rk_gmac-dwmac ff290000.ethernet: clock input or output? (input).</span></span><br><span class="line"><span class="string">[    2.360758] rk_gmac-dwmac ff290000.ethernet: TX delay(0x30).</span></span><br><span class="line"><span class="string">[    2.366461] rk_gmac-dwmac ff290000.ethernet: RX delay(0x10).</span></span><br><span class="line"><span class="string">[    2.372159] rk_gmac-dwmac ff290000.ethernet: integrated PHY? (no).</span></span><br><span class="line"><span class="string">[    2.378606] rk_gmac-dwmac ff290000.ethernet: cannot get clock clk_mac_speed</span></span><br><span class="line"><span class="string">[    2.385614] rk_gmac-dwmac ff290000.ethernet: clock input from PHY</span></span><br><span class="line"><span class="string">[    2.396732] rk_gmac-dwmac ff290000.ethernet: init for RGMII</span></span><br><span class="line"><span class="string">[    2.402491] stmmac - user ID: 0x10, Synopsys ID: 0x35</span></span><br><span class="line"><span class="string">[    2.407585]  Ring mode enabled</span></span><br><span class="line"><span class="string">[    2.410651]  DMA HW capability register supported</span></span><br><span class="line"><span class="string">[    2.415178]  Normal descriptors</span></span><br><span class="line"><span class="string">[    2.418541]  RX Checksum Offload Engine supported (type 2)</span></span><br><span class="line"><span class="string">[    2.424030]  TX Checksum insertion supported</span></span><br><span class="line"><span class="string">[    2.428324]  Wake-Up On Lan supported</span></span><br><span class="line"><span class="string">[    2.432076]  Enable RX Mitigation via HW Watchdog Timer</span></span><br><span class="line"><span class="string">[    2.636919] libphy: stmmac: probed</span></span><br><span class="line"><span class="string">[    2.640351] eth%d: PHY ID 00000000 at 0 IRQ POLL (stmmac-0:00) active</span></span><br><span class="line"><span class="string">[    2.646843] eth%d: PHY ID 00000000 at 1 IRQ POLL (stmmac-0:01)</span></span><br><span class="line"><span class="string">[    2.652688] eth%d: PHY ID 00000000 at 2 IRQ POLL (stmmac-0:02)</span></span><br><span class="line"><span class="string">[    2.658556] eth%d: PHY ID 00000000 at 3 IRQ POLL (stmmac-0:03)</span></span><br><span class="line"><span class="string">[    2.664399] eth%d: PHY ID 00000000 at 4 IRQ POLL (stmmac-0:04)</span></span><br><span class="line"><span class="string">[    2.670262] eth%d: PHY ID 00000000 at 5 IRQ POLL (stmmac-0:05)</span></span><br><span class="line"><span class="string">[    2.676123] eth%d: PHY ID 00000000 at 6 IRQ POLL (stmmac-0:06)</span></span><br><span class="line"><span class="string">[    2.681965] eth%d: PHY ID 00000000 at 7 IRQ POLL (stmmac-0:07)</span></span><br><span class="line"><span class="string">[    2.687823] eth%d: PHY ID 00000000 at 8 IRQ POLL (stmmac-0:08)</span></span><br><span class="line"><span class="string">[    2.693665] eth%d: PHY ID 00000000 at 9 IRQ POLL (stmmac-0:09)</span></span><br><span class="line"><span class="string">[    2.699525] eth%d: PHY ID 00000000 at 10 IRQ POLL (stmmac-0:0a)</span></span><br><span class="line"><span class="string">[    2.705470] eth%d: PHY ID 00000000 at 11 IRQ POLL (stmmac-0:0b)</span></span><br><span class="line"><span class="string">[    2.711396] eth%d: PHY ID 00000000 at 12 IRQ POLL (stmmac-0:0c)</span></span><br><span class="line"><span class="string">[    2.717339] eth%d: PHY ID 00000000 at 13 IRQ POLL (stmmac-0:0d)</span></span><br><span class="line"><span class="string">[    2.723266] eth%d: PHY ID 00000000 at 14 IRQ POLL (stmmac-0:0e)</span></span><br><span class="line"><span class="string">[    2.729209] eth%d: PHY ID 00000000 at 15 IRQ POLL (stmmac-0:0f)</span></span><br><span class="line"><span class="string">[    2.735135] eth%d: PHY ID 00000000 at 16 IRQ POLL (stmmac-0:10)</span></span><br><span class="line"><span class="string">[    2.741078] eth%d: PHY ID 00000000 at 17 IRQ POLL (stmmac-0:11)</span></span><br><span class="line"><span class="string">[    2.747021] eth%d: PHY ID 00000000 at 18 IRQ POLL (stmmac-0:12)</span></span><br><span class="line"><span class="string">[    2.752948] eth%d: PHY ID 00000000 at 19 IRQ POLL (stmmac-0:13)</span></span><br><span class="line"><span class="string">[    2.758890] eth%d: PHY ID 00000000 at 20 IRQ POLL (stmmac-0:14)</span></span><br><span class="line"><span class="string">[    2.764816] eth%d: PHY ID 00000000 at 21 IRQ POLL (stmmac-0:15)</span></span><br><span class="line"><span class="string">[    2.770759] eth%d: PHY ID 00000000 at 22 IRQ POLL (stmmac-0:16)</span></span><br><span class="line"><span class="string">[    2.776702] eth%d: PHY ID 00000000 at 23 IRQ POLL (stmmac-0:17)</span></span><br><span class="line"><span class="string">[    2.782629] eth%d: PHY ID 00000000 at 24 IRQ POLL (stmmac-0:18)</span></span><br><span class="line"><span class="string">[    2.788572] eth%d: PHY ID 00000000 at 25 IRQ POLL (stmmac-0:19)</span></span><br><span class="line"><span class="string">[    2.794498] eth%d: PHY ID 00000000 at 26 IRQ POLL (stmmac-0:1a)</span></span><br><span class="line"><span class="string">[    2.800441] eth%d: PHY ID 00000000 at 27 IRQ POLL (stmmac-0:1b)</span></span><br><span class="line"><span class="string">[    2.806385] eth%d: PHY ID 00000000 at 28 IRQ POLL (stmmac-0:1c)</span></span><br><span class="line"><span class="string">[    2.812310] eth%d: PHY ID 00000000 at 29 IRQ POLL (stmmac-0:1d)</span></span><br><span class="line"><span class="string">[    2.818253] eth%d: PHY ID 00000000 at 30 IRQ POLL (stmmac-0:1e)</span></span><br><span class="line"><span class="string">[    2.824180] eth%d: PHY ID 00000000 at 31 IRQ POLL (stmmac-0:1f)</span></span><br><span class="line"><span class="string">[    2.832682] PPP generic driver version 2.4.2</span></span><br><span class="line"><span class="string">[    2.837523] usbcore: registered new interface driver rndis_wlan</span></span><br><span class="line"><span class="string">[    2.843957] usbcore: registered new interface driver rt2800usb</span></span><br><span class="line"><span class="string">[    2.849868] </span></span><br><span class="line"><span class="string">[    2.851373] =======================================================</span></span><br><span class="line"><span class="string">[    2.857679] ==== Launching Wi-Fi driver! (Powered by Rockchip) ====</span></span><br><span class="line"><span class="string">[    2.863953] =======================================================</span></span><br><span class="line"><span class="string">[    2.870248] Realtek 8723DS SDIO WiFi driver (Powered by Rockchip,Ver v5.10.1-20-g5af20e016.20200310_beta) init.</span></span><br><span class="line"><span class="string">[    2.880346] [WLAN_RFKILL]: rockchip_wifi_power: 1</span></span><br><span class="line"><span class="string">[    2.885058] [WLAN_RFKILL]: rockchip_wifi_power: rfkill-wlan driver has not Successful initialized</span></span><br><span class="line"><span class="string">[    2.893947] sdio: host isn&#x27;</span>t  initialization successfully.</span><br><span class="line">[    2.899470] RTW: module init start</span><br><span class="line">[    2.902884] RTW: rtl8723ds v5.10.1-20-g5af20e016.20200310_beta</span><br><span class="line">[    2.908746] RTW: build time: Aug  7 2024 21:42:16</span><br><span class="line">[    2.913458] RTW: rtl8723ds BT-Coex version = COEX20200103-3535</span><br><span class="line">[    3.915338] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: Enter</span><br><span class="line">[    3.920925] [WLAN_RFKILL]: rockchip_wifi_get_oob_irq: rfkill-wlan driver has not Successful initialized</span><br><span class="line">[    3.930484] RTW: module init ret=0</span><br><span class="line">[    3.933922] Rockchip WiFi SYS interface (V1.00) ... </span><br><span class="line">[    3.938995] pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver</span><br><span class="line">[    3.946536] usbcore: registered new interface driver pegasus</span><br><span class="line">[    3.952293] usbcore: registered new interface driver rtl8150</span><br><span class="line">[    3.958094] usbcore: registered new interface driver r8152</span><br><span class="line">[    3.963704] usbcore: registered new interface driver asix</span><br><span class="line">[    3.969256] usbcore: registered new interface driver ax88179_178a</span><br><span class="line">[    3.975489] usbcore: registered new interface driver cdc_ether</span><br><span class="line">[    3.981422] usbcore: registered new interface driver dm9601</span><br><span class="line">[    3.987155] usbcore: registered new interface driver smsc75xx</span><br><span class="line">[    3.993016] usbcore: registered new interface driver smsc95xx</span><br><span class="line">[    3.998901] usbcore: registered new interface driver net1080</span><br><span class="line">[    4.004656] usbcore: registered new interface driver rndis_host</span><br><span class="line">[    4.010736] usbcore: registered new interface driver MOSCHIP usb-ethernet driver</span><br><span class="line">[    4.018320] usbcore: registered new interface driver cdc_ncm</span><br><span class="line">[    4.024078] usbcore: registered new interface driver cdc_mbim</span><br><span class="line">[    4.030301] ff540000.usb supply vusb_d not found, using dummy regulator</span><br><span class="line">[    4.037063] ff540000.usb supply vusb_a not found, using dummy regulator</span><br><span class="line">[    4.156019] dwc2 ff540000.usb: DWC OTG Controller</span><br><span class="line">[    4.160772] dwc2 ff540000.usb: new USB bus registered, assigned bus number 1</span><br><span class="line">[    4.167917] dwc2 ff540000.usb: irq 43, io mem 0xff540000</span><br><span class="line">[    4.173640] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002</span><br><span class="line">[    4.180488] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1</span><br><span class="line">[    4.187749] usb usb1: Product: DWC OTG Controller</span><br><span class="line">[    4.192466] usb usb1: Manufacturer: Linux 4.4.194 dwc2_hsotg</span><br><span class="line">[    4.198145] usb usb1: SerialNumber: ff540000.usb</span><br><span class="line">[    4.203866] hub 1-0:1.0: USB hub found</span><br><span class="line">[    4.207741] hub 1-0:1.0: 1 port detected</span><br><span class="line">[    4.212664] ff580000.usb supply vusb_d not found, using dummy regulator</span><br><span class="line">[    4.219486] ff580000.usb supply vusb_a not found, using dummy regulator</span><br><span class="line">[    4.345373] dwc2 ff580000.usb: EPs: 10, dedicated fifos, 972 entries <span class="keyword">in</span> SPRAM</span><br><span class="line">[    4.353331] dwc2 ff580000.usb: DWC OTG Controller</span><br><span class="line">[    4.358180] dwc2 ff580000.usb: new USB bus registered, assigned bus number 2</span><br><span class="line">[    4.365331] dwc2 ff580000.usb: irq 44, io mem 0xff580000</span><br><span class="line">[    4.370948] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002</span><br><span class="line">[    4.377794] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1</span><br><span class="line">[    4.385027] usb usb2: Product: DWC OTG Controller</span><br><span class="line">[    4.389772] usb usb2: Manufacturer: Linux 4.4.194 dwc2_hsotg</span><br><span class="line">[    4.395464] usb usb2: SerialNumber: ff580000.usb</span><br><span class="line">[    4.401161] hub 2-0:1.0: USB hub found</span><br><span class="line">[    4.404990] hub 2-0:1.0: 1 port detected</span><br><span class="line">[    4.411577] ehci_hcd: USB 2.0 <span class="string">&#x27;Enhanced&#x27;</span> Host Controller (EHCI) Driver</span><br><span class="line">[    4.418183] ehci-platform: EHCI generic platform driver</span><br><span class="line">[    4.423861] ehci-platform ff500000.usb: EHCI Host Controller</span><br><span class="line">[    4.429952] ehci-platform ff500000.usb: new USB bus registered, assigned bus number 3</span><br><span class="line">[    4.438090] ehci-platform ff500000.usb: irq 41, io mem 0xff500000</span><br><span class="line">[    4.455351] ehci-platform ff500000.usb: USB 2.0 started, EHCI 1.00</span><br><span class="line">[    4.461872] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002</span><br><span class="line">[    4.468728] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1</span><br><span class="line">[    4.475993] usb usb3: Product: EHCI Host Controller</span><br><span class="line">[    4.480878] usb usb3: Manufacturer: Linux 4.4.194 ehci_hcd</span><br><span class="line">[    4.486401] usb usb3: SerialNumber: ff500000.usb</span><br><span class="line">[    4.492041] hub 3-0:1.0: USB hub found</span><br><span class="line">[    4.495917] hub 3-0:1.0: 1 port detected</span><br><span class="line">[    4.500981] ohci_hcd: USB 1.1 <span class="string">&#x27;Open&#x27;</span> Host Controller (OHCI) Driver</span><br><span class="line">[    4.507471] ohci-platform: OHCI generic platform driver</span><br><span class="line">[    4.513343] usbcore: registered new interface driver cdc_acm</span><br><span class="line">[    4.519052] cdc_acm: USB Abstract Control Model driver <span class="keyword">for</span> USB modems and ISDN adapters</span><br><span class="line">[    4.527224] usbcore: registered new interface driver cdc_wdm</span><br><span class="line">[    4.533075] usbcore: registered new interface driver usb-storage</span><br><span class="line">[    4.539310] usbcore: registered new interface driver usbserial</span><br><span class="line">[    4.545232] usbcore: registered new interface driver usbserial_generic</span><br><span class="line">[    4.551864] usbserial: USB Serial support registered <span class="keyword">for</span> generic</span><br><span class="line">[    4.558019] usbcore: registered new interface driver cp210x</span><br><span class="line">[    4.563665] usbserial: USB Serial support registered <span class="keyword">for</span> cp210x</span><br><span class="line">[    4.569805] usbcore: registered new interface driver ftdi_sio</span><br><span class="line">[    4.575669] usbserial: USB Serial support registered <span class="keyword">for</span> FTDI USB Serial Device</span><br><span class="line">[    4.583302] usbcore: registered new interface driver keyspan</span><br><span class="line">[    4.589069] usbserial: USB Serial support registered <span class="keyword">for</span> Keyspan - (without firmware)</span><br><span class="line">[    4.597292] usbserial: USB Serial support registered <span class="keyword">for</span> Keyspan 1 port adapter</span><br><span class="line">[    4.604662] usbserial: USB Serial support registered <span class="keyword">for</span> Keyspan 2 port adapter</span><br><span class="line">[    4.612077] usbserial: USB Serial support registered <span class="keyword">for</span> Keyspan 4 port adapter</span><br><span class="line">[    4.619545] usbcore: registered new interface driver option</span><br><span class="line">[    4.625182] usbserial: USB Serial support registered <span class="keyword">for</span> GSM modem (1-port)</span><br><span class="line">[    4.632603] usbcore: registered new interface driver oti6858</span><br><span class="line">[    4.638370] usbserial: USB Serial support registered <span class="keyword">for</span> oti6858</span><br><span class="line">[    4.644485] usbcore: registered new interface driver pl2303</span><br><span class="line">[    4.650178] usbserial: USB Serial support registered <span class="keyword">for</span> pl2303</span><br><span class="line">[    4.656270] usbcore: registered new interface driver qcserial</span><br><span class="line">[    4.662076] usbserial: USB Serial support registered <span class="keyword">for</span> Qualcomm USB modem</span><br><span class="line">[    4.669219] usbcore: registered new interface driver sierra</span><br><span class="line">[    4.674855] usbserial: USB Serial support registered <span class="keyword">for</span> Sierra USB modem</span><br><span class="line">[    4.683533] usbcore: registered new interface driver iforce</span><br><span class="line">[    4.689310] usbcore: registered new interface driver xpad</span><br><span class="line">[    4.695459] usbcore: registered new interface driver usbtouchscreen</span><br><span class="line">[    4.703013] i2c /dev entries driver</span><br><span class="line">[    4.708272] rk3x-i2c ff140000.i2c: Initialized RK3xxx I2C bus at f09de000</span><br><span class="line">[    4.716497] rk3x-i2c ff660000.i2c: Initialized RK3xxx I2C bus at f09f2000</span><br><span class="line">[    4.726801] rkisp1 ff910000.rkisp1: rkisp1 driver version: v00.01.05</span><br><span class="line">[    4.733210] rkisp1 ff910000.rkisp1: Missing rockchip,grf property</span><br><span class="line">[    4.743190] usbcore: registered new interface driver uvcvideo</span><br><span class="line">[    4.748996] USB Video Class driver (1.1.1)</span><br><span class="line">[    4.755961] Boot mode: normal</span><br><span class="line">[    4.759968] rockchip-thermal ff280000.tsadc: Missing rockchip,grf property</span><br><span class="line">[    4.766960] rockchip-thermal ff280000.tsadc: failed to register sensor 1: -517</span><br><span class="line">[    4.774194] rockchip-thermal ff280000.tsadc: failed to register sensor[0] : error = -517</span><br><span class="line">[    4.784386] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: dm-devel@redhat.com</span><br><span class="line">[    4.793239] Bluetooth: Virtual HCI driver ver 1.5</span><br><span class="line">[    4.798310] Bluetooth: HCI UART driver ver 2.3</span><br><span class="line">[    4.802766] Bluetooth: HCI UART protocol H4 registered</span><br><span class="line">[    4.807950] Bluetooth: HCI UART protocol LL registered</span><br><span class="line">[    4.813095] Bluetooth: HCI UART protocol ATH3K registered</span><br><span class="line">[    4.818676] usbcore: registered new interface driver bfusb</span><br><span class="line">[    4.824300] usbcore: registered new interface driver btusb</span><br><span class="line">[    4.830425] cpu cpu0: bin=1</span><br><span class="line">[    4.833438] cpu cpu0: leakage=29</span><br><span class="line">[    4.836782] cpu cpu0: Failed to get reg</span><br><span class="line">[    4.840653] cpu cpu0: bin-scale=25</span><br><span class="line">[    4.844612] sdhci: Secure Digital Host Controller Interface driver</span><br><span class="line">[    4.850841] sdhci: Copyright(c) Pierre Ossman</span><br><span class="line">[    4.855223] Synopsys Designware Multimedia Card Interface Driver</span><br><span class="line">[    4.862804] dwmmc_rockchip ff0c0000.dwmmc: IDMAC supports 32-bit address mode.</span><br><span class="line">[    4.870166] dwmmc_rockchip ff0c0000.dwmmc: Using internal DMA controller.</span><br><span class="line">[    4.877015] dwmmc_rockchip ff0c0000.dwmmc: Version ID is 270a</span><br><span class="line">[    4.882847] dwmmc_rockchip ff0c0000.dwmmc: DW MMC controller at irq 29,32 bit host data width,256 deep fifo</span><br><span class="line">[    4.892663] dwmmc_rockchip ff0c0000.dwmmc: <span class="string">&#x27;clock-freq-min-max&#x27;</span> property was deprecated.</span><br><span class="line">[    4.901801] dwmmc_rockchip ff0d0000.dwmmc: IDMAC supports 32-bit address mode.</span><br><span class="line">[    4.909173] dwmmc_rockchip ff0d0000.dwmmc: Using internal DMA controller.</span><br><span class="line">[    4.916025] dwmmc_rockchip ff0d0000.dwmmc: Version ID is 270a</span><br><span class="line">[    4.921843] dwmmc_rockchip ff0d0000.dwmmc: DW MMC controller at irq 30,32 bit host data width,256 deep fifo</span><br><span class="line">[    4.931648] dwmmc_rockchip ff0d0000.dwmmc: <span class="string">&#x27;clock-freq-min-max&#x27;</span> property was deprecated.</span><br><span class="line">[    4.939827] dwmmc_rockchip ff0d0000.dwmmc: No vmmc regulator found</span><br><span class="line">[    4.946048] dwmmc_rockchip ff0d0000.dwmmc: No vqmmc regulator found</span><br><span class="line">[    4.953220] sdhci-pltfm: SDHCI platform and OF driver helper</span><br><span class="line">[    4.959750] hidraw: raw HID events driver (C) Jiri Kosina</span><br><span class="line">[    4.966887] usbcore: registered new interface driver usbhid</span><br><span class="line">[    4.972470] usbhid: USB HID core driver</span><br><span class="line">[    4.976954] ashmem: initialized</span><br><span class="line">[    4.981428] rockchip-dmc dmc: unable to get devfreq-event device : dfi</span><br><span class="line">[    4.991137] rknandbase v1.2 2018-05-08</span><br><span class="line">[    4.996380] usbcore: registered new interface driver snd-usb-audio</span><br><span class="line">[    5.995344] rk3x-i2c ff660000.i2c: <span class="built_in">timeout</span>, ipd: 0x00, state: 1</span><br><span class="line">[    6.007509] u32 classifier</span><br><span class="line">[    6.010253] Netfilter messages via NETLINK v0.30.</span><br><span class="line">[    6.015084] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)</span><br><span class="line">[    6.021770] ctnetlink v0.93: registering with nfnetlink.</span><br><span class="line">[    6.027406] ip_set: protocol 6</span><br><span class="line">[    6.030495] IPVS: Registered protocols ()</span><br><span class="line">[    6.034563] IPVS: Connection <span class="built_in">hash</span> table configured (size=4096, memory=32Kbytes)</span><br><span class="line">[    6.042082] IPVS: Creating netns size=1104 <span class="built_in">id</span>=0</span><br><span class="line">[    6.046705] IPVS: ipvs loaded.</span><br><span class="line">[    6.050394] ip_tables: (C) 2000-2006 Netfilter Core Team</span><br><span class="line">[    6.056092] Initializing XFRM netlink socket</span><br><span class="line">[    6.061757] NET: Registered protocol family 10</span><br><span class="line">[    6.067842] ip6_tables: (C) 2000-2006 Netfilter Core Team</span><br><span class="line">[    6.073556] sit: IPv6 over IPv4 tunneling driver</span><br><span class="line">[    6.079291] NET: Registered protocol family 17</span><br><span class="line">[    6.083789] NET: Registered protocol family 15</span><br><span class="line">[    6.088359] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter <span class="keyword">if</span> you need this.</span><br><span class="line">[    6.101047] Bridge firewalling registered</span><br><span class="line">[    6.105311] Bluetooth: RFCOMM socket layer initialized</span><br><span class="line">[    6.110488] Bluetooth: RFCOMM ver 1.11</span><br><span class="line">[    6.114267] Bluetooth: HIDP (Human Interface Emulation) ver 1.2</span><br><span class="line">[    6.120258] Bluetooth: HIDP socket layer initialized</span><br><span class="line">[    6.125356] 8021q: 802.1Q VLAN Support v1.8</span><br><span class="line">[    6.129583] lib80211: common routines <span class="keyword">for</span> IEEE802.11 drivers</span><br><span class="line">[    6.135378] [WLAN_RFKILL]: Enter rfkill_wlan_init</span><br><span class="line">[    6.140452] [WLAN_RFKILL]: Enter rfkill_wlan_probe</span><br><span class="line">[    6.145295] [WLAN_RFKILL]: can<span class="string">&#x27;t find rockchip,grf property</span></span><br><span class="line"><span class="string">[    6.150879] [WLAN_RFKILL]: wlan_platdata_parse_dt: wifi_chip_type = rtl8723bs</span></span><br><span class="line"><span class="string">[    6.158049] [WLAN_RFKILL]: wlan_platdata_parse_dt: enable wifi power control.</span></span><br><span class="line"><span class="string">[    6.165191] [WLAN_RFKILL]: wlan_platdata_parse_dt: wifi power controled by gpio.</span></span><br><span class="line"><span class="string">[    6.172625] /wireless-wlan: could not get #gpio-cells for /display-subsystem/route/route-lvds</span></span><br><span class="line"><span class="string">[    6.181235] /wireless-wlan: could not get #gpio-cells for /display-subsystem/route/route-lvds</span></span><br><span class="line"><span class="string">[    6.189811] [WLAN_RFKILL]: wlan_platdata_parse_dt: The ref_wifi_clk not found !</span></span><br><span class="line"><span class="string">[    6.197146] [WLAN_RFKILL]: rfkill_wlan_probe: init gpio</span></span><br><span class="line"><span class="string">[    6.202378] [WLAN_RFKILL]: Exit rfkill_wlan_probe</span></span><br><span class="line"><span class="string">[    6.207238] [BT_RFKILL]: Enter rfkill_rk_init</span></span><br><span class="line"><span class="string">[    6.212099] /wireless-bluetooth: could not get #gpio-cells for /display-subsystem/route/route-lvds</span></span><br><span class="line"><span class="string">[    6.221130] [BT_RFKILL]: bluetooth_platdata_parse_dt: uart_rts_gpios is no-in-use.</span></span><br><span class="line"><span class="string">[    6.228743] /wireless-bluetooth: could not get #gpio-cells for /display-subsystem/route/route-lvds</span></span><br><span class="line"><span class="string">[    6.237756] /wireless-bluetooth: could not get #gpio-cells for /display-subsystem/route/route-lvds</span></span><br><span class="line"><span class="string">[    6.246764] /wireless-bluetooth: could not get #gpio-cells for /display-subsystem/route/route-lvds</span></span><br><span class="line"><span class="string">[    6.255790] /wireless-bluetooth: could not get #gpio-cells for /display-subsystem/route/route-lvds</span></span><br><span class="line"><span class="string">[    6.264779] [BT_RFKILL]: bluetooth_platdata_parse_dt: clk_get failed!!!.</span></span><br><span class="line"><span class="string">[    6.271840] [BT_RFKILL]: bt_default device registered.</span></span><br><span class="line"><span class="string">[    6.277191] Key type dns_resolver registered</span></span><br><span class="line"><span class="string">[    6.283161] ThumbEE CPU extension supported.</span></span><br><span class="line"><span class="string">[    6.287539] Registering SWP/SWPB emulation handler</span></span><br><span class="line"><span class="string">[    6.293723] Loading compiled-in X.509 certificates</span></span><br><span class="line"><span class="string">[    6.300110] rga2: Driver loaded successfully ver:2.0.00000</span></span><br><span class="line"><span class="string">[    6.305965] rga2: Module initialized.</span></span><br><span class="line"><span class="string">[    6.310580] backlight supply power not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    6.317690] pwm-regulator vdd-logic: Failed to get PWM: -517</span></span><br><span class="line"><span class="string">[    6.324230] panel-simple edp-panel: failed to get power regulator: -517</span></span><br><span class="line"><span class="string">[    6.331716] mali ffa30000.gpu: Failed to get regulator</span></span><br><span class="line"><span class="string">[    6.336924] mali ffa30000.gpu: Power control initialization failed</span></span><br><span class="line"><span class="string">[    6.344136] input: adc-keys as /devices/platform/adc-keys/input/input0</span></span><br><span class="line"><span class="string">[    6.352879] rockchip-thermal ff280000.tsadc: Missing rockchip,grf property</span></span><br><span class="line"><span class="string">[    6.359882] rockchip-thermal ff280000.tsadc: failed to register sensor 1: -517</span></span><br><span class="line"><span class="string">[    6.367167] rockchip-thermal ff280000.tsadc: failed to register sensor[0] : error = -517</span></span><br><span class="line"><span class="string">[    6.377069] dwmmc_rockchip ff0c0000.dwmmc: IDMAC supports 32-bit address mode.</span></span><br><span class="line"><span class="string">[    6.384393] dwmmc_rockchip ff0c0000.dwmmc: Using internal DMA controller.</span></span><br><span class="line"><span class="string">[    6.391250] dwmmc_rockchip ff0c0000.dwmmc: Version ID is 270a</span></span><br><span class="line"><span class="string">[    6.397065] dwmmc_rockchip ff0c0000.dwmmc: DW MMC controller at irq 29,32 bit host data width,256 deep fifo</span></span><br><span class="line"><span class="string">[    6.406869] dwmmc_rockchip ff0c0000.dwmmc: &#x27;</span>clock-freq-min-max<span class="string">&#x27; property was deprecated.</span></span><br><span class="line"><span class="string">[    6.416563] dwmmc_rockchip ff0d0000.dwmmc: IDMAC supports 32-bit address mode.</span></span><br><span class="line"><span class="string">[    6.423870] dwmmc_rockchip ff0d0000.dwmmc: Using internal DMA controller.</span></span><br><span class="line"><span class="string">[    6.430737] dwmmc_rockchip ff0d0000.dwmmc: Version ID is 270a</span></span><br><span class="line"><span class="string">[    6.436559] dwmmc_rockchip ff0d0000.dwmmc: DW MMC controller at irq 30,32 bit host data width,256 deep fifo</span></span><br><span class="line"><span class="string">[    6.446470] dwmmc_rockchip ff0d0000.dwmmc: &#x27;</span>clock-freq-min-max<span class="string">&#x27; property was deprecated.</span></span><br><span class="line"><span class="string">[    6.454604] dwmmc_rockchip ff0d0000.dwmmc: No vmmc regulator found</span></span><br><span class="line"><span class="string">[    6.460843] dwmmc_rockchip ff0d0000.dwmmc: No vqmmc regulator found</span></span><br><span class="line"><span class="string">[    6.468466] rockchip-dmc dmc: Cannot get the regulator &quot;center&quot;</span></span><br><span class="line"><span class="string">[    7.465337] rk3x-i2c ff660000.i2c: timeout, ipd: 0x00, state: 1</span></span><br><span class="line"><span class="string">[    7.472692] backlight supply power not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    7.479766] pwm-regulator vdd-logic: Failed to get PWM: -517</span></span><br><span class="line"><span class="string">[    7.486351] panel-simple edp-panel: failed to get power regulator: -517</span></span><br><span class="line"><span class="string">[    7.493703] mali ffa30000.gpu: Failed to get regulator</span></span><br><span class="line"><span class="string">[    7.498905] mali ffa30000.gpu: Power control initialization failed</span></span><br><span class="line"><span class="string">[    7.506891] input: gpio-keys as /devices/platform/gpio-keys/input/input1</span></span><br><span class="line"><span class="string">[    7.514157] hctosys: unable to open rtc device (rtc0)</span></span><br><span class="line"><span class="string">[    7.515820] rockchip-thermal ff280000.tsadc: Missing rockchip,grf property</span></span><br><span class="line"><span class="string">[    7.515878] rockchip-thermal ff280000.tsadc: failed to register sensor 1: -517</span></span><br><span class="line"><span class="string">[    7.515889] rockchip-thermal ff280000.tsadc: failed to register sensor[0] : error = -517</span></span><br><span class="line"><span class="string">[    7.517638] dwmmc_rockchip ff0c0000.dwmmc: IDMAC supports 32-bit address mode.</span></span><br><span class="line"><span class="string">[    7.517722] dwmmc_rockchip ff0c0000.dwmmc: Using internal DMA controller.</span></span><br><span class="line"><span class="string">[    7.517740] dwmmc_rockchip ff0c0000.dwmmc: Version ID is 270a</span></span><br><span class="line"><span class="string">[    7.517781] dwmmc_rockchip ff0c0000.dwmmc: DW MMC controller at irq 29,32 bit host data width,256 deep fifo</span></span><br><span class="line"><span class="string">[    7.517812] dwmmc_rockchip ff0c0000.dwmmc: &#x27;</span>clock-freq-min-max<span class="string">&#x27; property was deprecated.</span></span><br><span class="line"><span class="string">[    7.519318] dwmmc_rockchip ff0d0000.dwmmc: IDMAC supports 32-bit address mode.</span></span><br><span class="line"><span class="string">[    7.519396] dwmmc_rockchip ff0d0000.dwmmc: Using internal DMA controller.</span></span><br><span class="line"><span class="string">[    7.519413] dwmmc_rockchip ff0d0000.dwmmc: Version ID is 270a</span></span><br><span class="line"><span class="string">[    7.519452] dwmmc_rockchip ff0d0000.dwmmc: DW MMC controller at irq 30,32 bit host data width,256 deep fifo</span></span><br><span class="line"><span class="string">[    7.519483] dwmmc_rockchip ff0d0000.dwmmc: &#x27;</span>clock-freq-min-max<span class="string">&#x27; property was deprecated.</span></span><br><span class="line"><span class="string">[    7.519524] dwmmc_rockchip ff0d0000.dwmmc: No vmmc regulator found</span></span><br><span class="line"><span class="string">[    7.519532] dwmmc_rockchip ff0d0000.dwmmc: No vqmmc regulator found</span></span><br><span class="line"><span class="string">[    7.520770] rockchip-dmc dmc: Cannot get the regulator &quot;center&quot;</span></span><br><span class="line"><span class="string">[    7.657713] vcc_3g: disabling</span></span><br><span class="line"><span class="string">[    7.660699] vcc_otg_vbus: disabling</span></span><br><span class="line"><span class="string">[    8.515333] rk3x-i2c ff660000.i2c: timeout, ipd: 0x00, state: 1</span></span><br><span class="line"><span class="string">[    8.522809] backlight supply power not found, using dummy regulator</span></span><br><span class="line"><span class="string">[    8.529916] pwm-regulator vdd-logic: Failed to get PWM: -517</span></span><br><span class="line"><span class="string">[    8.536501] panel-simple edp-panel: failed to get power regulator: -517</span></span><br><span class="line"><span class="string">[    8.543860] mali ffa30000.gpu: Failed to get regulator</span></span><br><span class="line"><span class="string">[    8.549080] mali ffa30000.gpu: Power control initialization failed</span></span><br><span class="line"><span class="string">[    9.335315] vendor storage:20190527 ret = -1</span></span><br><span class="line"><span class="string">[  153.455406] random: nonblocking pool is initialized</span></span><br><span class="line"><span class="string">[  240.925330] INFO: task swapper/0:1 blocked for more than 120 seconds.</span></span><br><span class="line"><span class="string">[  240.931783]       Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  240.935753] &quot;echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs&quot; disables this message.</span></span><br><span class="line"><span class="string">[  240.943582] swapper/0       D c0c21ec4     0     1      0 0x00000000</span></span><br><span class="line"><span class="string">[  240.950041] [&lt;c0c21ec4&gt;] (__schedule) from [&lt;c0c222c8&gt;] (schedule+0xa8/0xc0)</span></span><br><span class="line"><span class="string">[  240.957129] [&lt;c0c222c8&gt;] (schedule) from [&lt;c0c24c84&gt;] (schedule_timeout+0x2c/0x248)</span></span><br><span class="line"><span class="string">[  240.964793] [&lt;c0c24c84&gt;] (schedule_timeout) from [&lt;c0c22db8&gt;] (wait_for_common+0xdc/0x158)</span></span><br><span class="line"><span class="string">[  240.973100] [&lt;c0c22db8&gt;] (wait_for_common) from [&lt;c0c22e54&gt;] (wait_for_completion+0x20/0x24)</span></span><br><span class="line"><span class="string">[  240.981584] [&lt;c0c22e54&gt;] (wait_for_completion) from [&lt;c04b0b04&gt;] (drm_dev_wait+0x1c/0x24)</span></span><br><span class="line"><span class="string">[  240.989796] [&lt;c04b0b04&gt;] (drm_dev_wait) from [&lt;c122dab0&gt;] (drm_misc_init+0x54/0x22c)</span></span><br><span class="line"><span class="string">[  240.997583] [&lt;c122dab0&gt;] (drm_misc_init) from [&lt;c0101a48&gt;] (do_one_initcall+0x60/0x1c8)</span></span><br><span class="line"><span class="string">[  241.005632] [&lt;c0101a48&gt;] (do_one_initcall) from [&lt;c1200fa4&gt;] (kernel_init_freeable+0x214/0x264)</span></span><br><span class="line"><span class="string">[  241.014342] [&lt;c1200fa4&gt;] (kernel_init_freeable) from [&lt;c0c2119c&gt;] (kernel_init+0x18/0x118)</span></span><br><span class="line"><span class="string">[  241.022646] [&lt;c0c2119c&gt;] (kernel_init) from [&lt;c01074e8&gt;] (ret_from_fork+0x14/0x2c)</span></span><br><span class="line"><span class="string">[  241.030250] Sending NMI to all CPUs:</span></span><br><span class="line"><span class="string">[  241.035199] NMI backtrace for cpu 0</span></span><br><span class="line"><span class="string">[  241.038728] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.044738] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.049557] task: c130d480 task.stack: c1300000</span></span><br><span class="line"><span class="string">[  241.054088] PC is at arch_cpu_idle+0x2c/0x48</span></span><br><span class="line"><span class="string">[  241.058383] LR is at arch_cpu_idle+0x3c/0x48</span></span><br><span class="line"><span class="string">[  241.062660] pc : [&lt;c0107dcc&gt;]    lr : [&lt;c0107ddc&gt;]    psr: 60000013</span></span><br><span class="line"><span class="string">[  241.068954] sp : c1301f70  ip : c1301f80  fp : c1301f7c</span></span><br><span class="line"><span class="string">[  241.074180] r10: 00000000  r9 : c1306d74  r8 : c1264143</span></span><br><span class="line"><span class="string">[  241.079428] r7 : 00000000  r6 : c12b23e8  r5 : 00000000  r4 : 00000000</span></span><br><span class="line"><span class="string">[  241.085975] r3 : c0118b80  r2 : 00000000  r1 : 00000000  r0 : 00000001</span></span><br><span class="line"><span class="string">[  241.092502] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none</span></span><br><span class="line"><span class="string">[  241.099650] Control: 10c5387d  Table: 0000406a  DAC: 00000051</span></span><br><span class="line"><span class="string">[  241.105417] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.111426] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.116241] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  241.123983] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  241.131227] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c010806c&gt;] (show_regs+0x1c/0x20)</span></span><br><span class="line"><span class="string">[  241.138387] [&lt;c010806c&gt;] (show_regs) from [&lt;c0410c54&gt;] (nmi_cpu_backtrace+0x8c/0xd0)</span></span><br><span class="line"><span class="string">[  241.146151] [&lt;c0410c54&gt;] (nmi_cpu_backtrace) from [&lt;c010e0e0&gt;] (handle_IPI+0x220/0x29c)</span></span><br><span class="line"><span class="string">[  241.154159] [&lt;c010e0e0&gt;] (handle_IPI) from [&lt;c01014a0&gt;] (gic_handle_irq+0x88/0xa4)</span></span><br><span class="line"><span class="string">[  241.161747] [&lt;c01014a0&gt;] (gic_handle_irq) from [&lt;c010c114&gt;] (__irq_svc+0x54/0x70)</span></span><br><span class="line"><span class="string">[  241.169245] Exception stack(0xc1301f20 to 0xc1301f68)</span></span><br><span class="line"><span class="string">[  241.174305] 1f20: 00000001 00000000 00000000 c0118b80 00000000 00000000 c12b23e8 00000000</span></span><br><span class="line"><span class="string">[  241.182501] 1f40: c1264143 c1306d74 00000000 c1301f7c c1301f80 c1301f70 c0107ddc c0107dcc</span></span><br><span class="line"><span class="string">[  241.190708] 1f60: 60000013 ffffffff</span></span><br><span class="line"><span class="string">[  241.194207] [&lt;c010c114&gt;] (__irq_svc) from [&lt;c0107dcc&gt;] (arch_cpu_idle+0x2c/0x48)</span></span><br><span class="line"><span class="string">[  241.201625] [&lt;c0107dcc&gt;] (arch_cpu_idle) from [&lt;c0168064&gt;] (default_idle_call+0x38/0x3c)</span></span><br><span class="line"><span class="string">[  241.209739] [&lt;c0168064&gt;] (default_idle_call) from [&lt;c0168340&gt;] (cpu_startup_entry+0x278/0x344)</span></span><br><span class="line"><span class="string">[  241.218371] [&lt;c0168340&gt;] (cpu_startup_entry) from [&lt;c0c2116c&gt;] (rest_init+0x74/0x8c)</span></span><br><span class="line"><span class="string">[  241.226135] [&lt;c0c2116c&gt;] (rest_init) from [&lt;c1200d20&gt;] (start_kernel+0x3a8/0x418)</span></span><br><span class="line"><span class="string">[  241.233612] [&lt;c1200d20&gt;] (start_kernel) from [&lt;0000807c&gt;] (0x807c)</span></span><br><span class="line"><span class="string">[  241.239811] NMI backtrace for cpu 1</span></span><br><span class="line"><span class="string">[  241.243308] CPU: 1 PID: 29 Comm: khungtaskd Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.249506] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.254301] task: ee996580 task.stack: eebdc000</span></span><br><span class="line"><span class="string">[  241.258848] PC is at _raw_spin_unlock_irqrestore+0x20/0x24</span></span><br><span class="line"><span class="string">[  241.264338] LR is at _raw_spin_unlock_irqrestore+0x1c/0x24</span></span><br><span class="line"><span class="string">[  241.269851] pc : [&lt;c0c25868&gt;]    lr : [&lt;c0c25864&gt;]    psr: 600e0013</span></span><br><span class="line"><span class="string">[  241.276144] sp : eebdde40  ip : eebdde40  fp : eebdde54</span></span><br><span class="line"><span class="string">[  241.281371] r10: c13e6910  r9 : c13075ec  r8 : c1307ff0</span></span><br><span class="line"><span class="string">[  241.286619] r7 : 600e0013  r6 : c1308020  r5 : 0000000f  r4 : 600e0013</span></span><br><span class="line"><span class="string">[  241.293145] r3 : 00000455  r2 : 00000001  r1 : ee996580  r0 : c1355904</span></span><br><span class="line"><span class="string">[  241.299687] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none</span></span><br><span class="line"><span class="string">[  241.306847] Control: 10c5387d  Table: 0a4c806a  DAC: 00000051</span></span><br><span class="line"><span class="string">[  241.312592] CPU: 1 PID: 29 Comm: khungtaskd Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.318790] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.323585] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  241.331347] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  241.338593] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c010806c&gt;] (show_regs+0x1c/0x20)</span></span><br><span class="line"><span class="string">[  241.345754] [&lt;c010806c&gt;] (show_regs) from [&lt;c0410c54&gt;] (nmi_cpu_backtrace+0x8c/0xd0)</span></span><br><span class="line"><span class="string">[  241.353497] [&lt;c0410c54&gt;] (nmi_cpu_backtrace) from [&lt;c010e0e0&gt;] (handle_IPI+0x220/0x29c)</span></span><br><span class="line"><span class="string">[  241.361519] [&lt;c010e0e0&gt;] (handle_IPI) from [&lt;c01014a0&gt;] (gic_handle_irq+0x88/0xa4)</span></span><br><span class="line"><span class="string">[  241.369113] [&lt;c01014a0&gt;] (gic_handle_irq) from [&lt;c010c114&gt;] (__irq_svc+0x54/0x70)</span></span><br><span class="line"><span class="string">[  241.376612] Exception stack(0xeebdddf0 to 0xeebdde38)</span></span><br><span class="line"><span class="string">[  241.381670] dde0:                                     c1355904 ee996580 00000001 00000455</span></span><br><span class="line"><span class="string">[  241.389866] de00: 600e0013 0000000f c1308020 600e0013 c1307ff0 c13075ec c13e6910 eebdde54</span></span><br><span class="line"><span class="string">[  241.398061] de20: eebdde40 eebdde40 c0c25864 c0c25868 600e0013 ffffffff</span></span><br><span class="line"><span class="string">[  241.404673] [&lt;c010c114&gt;] (__irq_svc) from [&lt;c0c25868&gt;] (_raw_spin_unlock_irqrestore+0x20/0x24)</span></span><br><span class="line"><span class="string">[  241.413299] [&lt;c0c25868&gt;] (_raw_spin_unlock_irqrestore) from [&lt;c0436838&gt;] (gic_raise_softirq+0x70/0x90)</span></span><br><span class="line"><span class="string">[  241.422627] [&lt;c0436838&gt;] (gic_raise_softirq) from [&lt;c010d6e8&gt;] (smp_cross_call+0x94/0xcc)</span></span><br><span class="line"><span class="string">[  241.430823] [&lt;c010d6e8&gt;] (smp_cross_call) from [&lt;c010d78c&gt;] (raise_nmi+0x6c/0x70)</span></span><br><span class="line"><span class="string">[  241.438324] [&lt;c010d78c&gt;] (raise_nmi) from [&lt;c0410a64&gt;] (nmi_trigger_all_cpu_backtrace+0xc4/0x228)</span></span><br><span class="line"><span class="string">[  241.447231] [&lt;c0410a64&gt;] (nmi_trigger_all_cpu_backtrace) from [&lt;c010e2d0&gt;] (arch_trigger_all_cpu_backtrace+0x1c/0x24)</span></span><br><span class="line"><span class="string">[  241.457861] [&lt;c010e2d0&gt;] (arch_trigger_all_cpu_backtrace) from [&lt;c01b2534&gt;] (watchdog+0x32c/0x3a0)</span></span><br><span class="line"><span class="string">[  241.466843] [&lt;c01b2534&gt;] (watchdog) from [&lt;c0139fc0&gt;] (kthread+0x104/0x114)</span></span><br><span class="line"><span class="string">[  241.473804] [&lt;c0139fc0&gt;] (kthread) from [&lt;c01074e8&gt;] (ret_from_fork+0x14/0x2c)</span></span><br><span class="line"><span class="string">[  241.481048] NMI backtrace for cpu 2</span></span><br><span class="line"><span class="string">[  241.484546] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.490575] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.495392] task: ee94cfc0 task.stack: ee978000</span></span><br><span class="line"><span class="string">[  241.499923] PC is at arch_cpu_idle+0x2c/0x48</span></span><br><span class="line"><span class="string">[  241.504197] LR is at arch_cpu_idle+0x3c/0x48</span></span><br><span class="line"><span class="string">[  241.508495] pc : [&lt;c0107dcc&gt;]    lr : [&lt;c0107ddc&gt;]    psr: 600e0013</span></span><br><span class="line"><span class="string">[  241.514768] sp : ee979fa8  ip : ee979fb8  fp : ee979fb4</span></span><br><span class="line"><span class="string">[  241.520015] r10: 00000000  r9 : c1306d74  r8 : 0000406a</span></span><br><span class="line"><span class="string">[  241.525263] r7 : c13e6300  r6 : c12b23e8  r5 : 00000000  r4 : 00000000</span></span><br><span class="line"><span class="string">[  241.531790] r3 : c0118b80  r2 : 00000000  r1 : 00000000  r0 : 00000001</span></span><br><span class="line"><span class="string">[  241.538337] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none</span></span><br><span class="line"><span class="string">[  241.545498] Control: 10c5387d  Table: 0a51006a  DAC: 00000051</span></span><br><span class="line"><span class="string">[  241.551243] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.557268] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.562063] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  241.569826] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  241.577072] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c010806c&gt;] (show_regs+0x1c/0x20)</span></span><br><span class="line"><span class="string">[  241.584211] [&lt;c010806c&gt;] (show_regs) from [&lt;c0410c54&gt;] (nmi_cpu_backtrace+0x8c/0xd0)</span></span><br><span class="line"><span class="string">[  241.591973] [&lt;c0410c54&gt;] (nmi_cpu_backtrace) from [&lt;c010e0e0&gt;] (handle_IPI+0x220/0x29c)</span></span><br><span class="line"><span class="string">[  241.600001] [&lt;c010e0e0&gt;] (handle_IPI) from [&lt;c01014a0&gt;] (gic_handle_irq+0x88/0xa4)</span></span><br><span class="line"><span class="string">[  241.607594] [&lt;c01014a0&gt;] (gic_handle_irq) from [&lt;c010c114&gt;] (__irq_svc+0x54/0x70)</span></span><br><span class="line"><span class="string">[  241.615072] Exception stack(0xee979f58 to 0xee979fa0)</span></span><br><span class="line"><span class="string">[  241.620151] 9f40:                                                       00000001 00000000</span></span><br><span class="line"><span class="string">[  241.628348] 9f60: 00000000 c0118b80 00000000 00000000 c12b23e8 c13e6300 0000406a c1306d74</span></span><br><span class="line"><span class="string">[  241.636545] 9f80: 00000000 ee979fb4 ee979fb8 ee979fa8 c0107ddc c0107dcc 600e0013 ffffffff</span></span><br><span class="line"><span class="string">[  241.644721] [&lt;c010c114&gt;] (__irq_svc) from [&lt;c0107dcc&gt;] (arch_cpu_idle+0x2c/0x48)</span></span><br><span class="line"><span class="string">[  241.652135] [&lt;c0107dcc&gt;] (arch_cpu_idle) from [&lt;c0168064&gt;] (default_idle_call+0x38/0x3c)</span></span><br><span class="line"><span class="string">[  241.660243] [&lt;c0168064&gt;] (default_idle_call) from [&lt;c0168340&gt;] (cpu_startup_entry+0x278/0x344)</span></span><br><span class="line"><span class="string">[  241.668874] [&lt;c0168340&gt;] (cpu_startup_entry) from [&lt;c010dc44&gt;] (secondary_start_kernel+0x114/0x130)</span></span><br><span class="line"><span class="string">[  241.677937] [&lt;c010dc44&gt;] (secondary_start_kernel) from [&lt;0010186c&gt;] (0x10186c)</span></span><br><span class="line"><span class="string">[  241.685160] NMI backtrace for cpu 3</span></span><br><span class="line"><span class="string">[  241.688678] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.694686] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.699500] task: ee94d700 task.stack: ee97a000</span></span><br><span class="line"><span class="string">[  241.704030] PC is at arch_cpu_idle+0x2c/0x48</span></span><br><span class="line"><span class="string">[  241.708339] LR is at arch_cpu_idle+0x3c/0x48</span></span><br><span class="line"><span class="string">[  241.712617] pc : [&lt;c0107dcc&gt;]    lr : [&lt;c0107ddc&gt;]    psr: 600e0013</span></span><br><span class="line"><span class="string">[  241.718914] sp : ee97bfa8  ip : ee97bfb8  fp : ee97bfb4</span></span><br><span class="line"><span class="string">[  241.724141] r10: 00000000  r9 : c1306d74  r8 : 0000406a</span></span><br><span class="line"><span class="string">[  241.729390] r7 : c13e6300  r6 : c12b23e8  r5 : 00000000  r4 : 00000000</span></span><br><span class="line"><span class="string">[  241.735940] r3 : c0118b80  r2 : 00000000  r1 : 00000000  r0 : 00000001</span></span><br><span class="line"><span class="string">[  241.742467] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none</span></span><br><span class="line"><span class="string">[  241.749626] Control: 10c5387d  Table: 0a4e006a  DAC: 00000051</span></span><br><span class="line"><span class="string">[  241.755390] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.761398] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.766214] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  241.773956] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  241.781200] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c010806c&gt;] (show_regs+0x1c/0x20)</span></span><br><span class="line"><span class="string">[  241.788361] [&lt;c010806c&gt;] (show_regs) from [&lt;c0410c54&gt;] (nmi_cpu_backtrace+0x8c/0xd0)</span></span><br><span class="line"><span class="string">[  241.796124] [&lt;c0410c54&gt;] (nmi_cpu_backtrace) from [&lt;c010e0e0&gt;] (handle_IPI+0x220/0x29c)</span></span><br><span class="line"><span class="string">[  241.804132] [&lt;c010e0e0&gt;] (handle_IPI) from [&lt;c01014a0&gt;] (gic_handle_irq+0x88/0xa4)</span></span><br><span class="line"><span class="string">[  241.811723] [&lt;c01014a0&gt;] (gic_handle_irq) from [&lt;c010c114&gt;] (__irq_svc+0x54/0x70)</span></span><br><span class="line"><span class="string">[  241.819222] Exception stack(0xee97bf58 to 0xee97bfa0)</span></span><br><span class="line"><span class="string">[  241.824281] bf40:                                                       00000001 00000000</span></span><br><span class="line"><span class="string">[  241.832476] bf60: 00000000 c0118b80 00000000 00000000 c12b23e8 c13e6300 0000406a c1306d74</span></span><br><span class="line"><span class="string">[  241.840672] bf80: 00000000 ee97bfb4 ee97bfb8 ee97bfa8 c0107ddc c0107dcc 600e0013 ffffffff</span></span><br><span class="line"><span class="string">[  241.848867] [&lt;c010c114&gt;] (__irq_svc) from [&lt;c0107dcc&gt;] (arch_cpu_idle+0x2c/0x48)</span></span><br><span class="line"><span class="string">[  241.856278] [&lt;c0107dcc&gt;] (arch_cpu_idle) from [&lt;c0168064&gt;] (default_idle_call+0x38/0x3c)</span></span><br><span class="line"><span class="string">[  241.864369] [&lt;c0168064&gt;] (default_idle_call) from [&lt;c0168340&gt;] (cpu_startup_entry+0x278/0x344)</span></span><br><span class="line"><span class="string">[  241.872999] [&lt;c0168340&gt;] (cpu_startup_entry) from [&lt;c010dc44&gt;] (secondary_start_kernel+0x114/0x130)</span></span><br><span class="line"><span class="string">[  241.882064] [&lt;c010dc44&gt;] (secondary_start_kernel) from [&lt;0010186c&gt;] (0x10186c)</span></span><br><span class="line"><span class="string">[  241.889312] Kernel panic - not syncing: hung_task: blocked tasks</span></span><br><span class="line"><span class="string">[  241.895328] CPU: 1 PID: 29 Comm: khungtaskd Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.901504] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.906319] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  241.914073] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  241.921312] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c01eaa08&gt;] (panic+0x98/0x200)</span></span><br><span class="line"><span class="string">[  241.928202] [&lt;c01eaa08&gt;] (panic) from [&lt;c01b253c&gt;] (watchdog+0x334/0x3a0)</span></span><br><span class="line"><span class="string">[  241.935005] [&lt;c01b253c&gt;] (watchdog) from [&lt;c0139fc0&gt;] (kthread+0x104/0x114)</span></span><br><span class="line"><span class="string">[  241.941976] [&lt;c0139fc0&gt;] (kthread) from [&lt;c01074e8&gt;] (ret_from_fork+0x14/0x2c)</span></span><br><span class="line"><span class="string">[  241.949212] CPU0: stopping</span></span><br><span class="line"><span class="string">[  241.951941] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  241.957949] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  241.962764] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  241.970518] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  241.977752] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c010e088&gt;] (handle_IPI+0x1c8/0x29c)</span></span><br><span class="line"><span class="string">[  241.985154] [&lt;c010e088&gt;] (handle_IPI) from [&lt;c01014a0&gt;] (gic_handle_irq+0x88/0xa4)</span></span><br><span class="line"><span class="string">[  241.992734] [&lt;c01014a0&gt;] (gic_handle_irq) from [&lt;c010c114&gt;] (__irq_svc+0x54/0x70)</span></span><br><span class="line"><span class="string">[  242.000211] Exception stack(0xc1301f20 to 0xc1301f68)</span></span><br><span class="line"><span class="string">[  242.005277] 1f20: 00000001 00000000 00000000 c0118b80 00000000 00000000 c12b23e8 00000000</span></span><br><span class="line"><span class="string">[  242.013461] 1f40: c1264143 c1306d74 00000000 c1301f7c c1301f80 c1301f70 c0107ddc c0107dcc</span></span><br><span class="line"><span class="string">[  242.021637] 1f60: 60000013 ffffffff</span></span><br><span class="line"><span class="string">[  242.025143] [&lt;c010c114&gt;] (__irq_svc) from [&lt;c0107dcc&gt;] (arch_cpu_idle+0x2c/0x48)</span></span><br><span class="line"><span class="string">[  242.032548] [&lt;c0107dcc&gt;] (arch_cpu_idle) from [&lt;c0168064&gt;] (default_idle_call+0x38/0x3c)</span></span><br><span class="line"><span class="string">[  242.040649] [&lt;c0168064&gt;] (default_idle_call) from [&lt;c0168340&gt;] (cpu_startup_entry+0x278/0x344)</span></span><br><span class="line"><span class="string">[  242.049270] [&lt;c0168340&gt;] (cpu_startup_entry) from [&lt;c0c2116c&gt;] (rest_init+0x74/0x8c)</span></span><br><span class="line"><span class="string">[  242.057024] [&lt;c0c2116c&gt;] (rest_init) from [&lt;c1200d20&gt;] (start_kernel+0x3a8/0x418)</span></span><br><span class="line"><span class="string">[  242.064509] [&lt;c1200d20&gt;] (start_kernel) from [&lt;0000807c&gt;] (0x807c)</span></span><br><span class="line"><span class="string">[  242.070689] CPU3: stopping</span></span><br><span class="line"><span class="string">[  242.073419] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  242.079427] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  242.084239] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  242.091994] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  242.099229] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c010e088&gt;] (handle_IPI+0x1c8/0x29c)</span></span><br><span class="line"><span class="string">[  242.106629] [&lt;c010e088&gt;] (handle_IPI) from [&lt;c01014a0&gt;] (gic_handle_irq+0x88/0xa4)</span></span><br><span class="line"><span class="string">[  242.114210] [&lt;c01014a0&gt;] (gic_handle_irq) from [&lt;c010c114&gt;] (__irq_svc+0x54/0x70)</span></span><br><span class="line"><span class="string">[  242.121687] Exception stack(0xee97bf58 to 0xee97bfa0)</span></span><br><span class="line"><span class="string">[  242.126748] bf40:                                                       00000001 00000000</span></span><br><span class="line"><span class="string">[  242.134929] bf60: 00000000 c0118b80 00000000 00000000 c12b23e8 c13e6300 0000406a c1306d74</span></span><br><span class="line"><span class="string">[  242.143112] bf80: 00000000 ee97bfb4 ee97bfb8 ee97bfa8 c0107ddc c0107dcc 600e0013 ffffffff</span></span><br><span class="line"><span class="string">[  242.151298] [&lt;c010c114&gt;] (__irq_svc) from [&lt;c0107dcc&gt;] (arch_cpu_idle+0x2c/0x48)</span></span><br><span class="line"><span class="string">[  242.158703] [&lt;c0107dcc&gt;] (arch_cpu_idle) from [&lt;c0168064&gt;] (default_idle_call+0x38/0x3c)</span></span><br><span class="line"><span class="string">[  242.166805] [&lt;c0168064&gt;] (default_idle_call) from [&lt;c0168340&gt;] (cpu_startup_entry+0x278/0x344)</span></span><br><span class="line"><span class="string">[  242.175422] [&lt;c0168340&gt;] (cpu_startup_entry) from [&lt;c010dc44&gt;] (secondary_start_kernel+0x114/0x130)</span></span><br><span class="line"><span class="string">[  242.184471] [&lt;c010dc44&gt;] (secondary_start_kernel) from [&lt;0010186c&gt;] (0x10186c)</span></span><br><span class="line"><span class="string">[  242.191697] CPU2: stopping</span></span><br><span class="line"><span class="string">[  242.194426] CPU: 2 PID: 0 Comm: swapper/2 Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  242.200435] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  242.205249] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  242.213005] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  242.220240] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c010e088&gt;] (handle_IPI+0x1c8/0x29c)</span></span><br><span class="line"><span class="string">[  242.227640] [&lt;c010e088&gt;] (handle_IPI) from [&lt;c01014a0&gt;] (gic_handle_irq+0x88/0xa4)</span></span><br><span class="line"><span class="string">[  242.235220] [&lt;c01014a0&gt;] (gic_handle_irq) from [&lt;c010c114&gt;] (__irq_svc+0x54/0x70)</span></span><br><span class="line"><span class="string">[  242.242697] Exception stack(0xee979f58 to 0xee979fa0)</span></span><br><span class="line"><span class="string">[  242.247757] 9f40:                                                       00000001 00000000</span></span><br><span class="line"><span class="string">[  242.255939] 9f60: 00000000 c0118b80 00000000 00000000 c12b23e8 c13e6300 0000406a c1306d74</span></span><br><span class="line"><span class="string">[  242.264121] 9f80: 00000000 ee979fb4 ee979fb8 ee979fa8 c0107ddc c0107dcc 600e0013 ffffffff</span></span><br><span class="line"><span class="string">[  242.272306] [&lt;c010c114&gt;] (__irq_svc) from [&lt;c0107dcc&gt;] (arch_cpu_idle+0x2c/0x48)</span></span><br><span class="line"><span class="string">[  242.279710] [&lt;c0107dcc&gt;] (arch_cpu_idle) from [&lt;c0168064&gt;] (default_idle_call+0x38/0x3c)</span></span><br><span class="line"><span class="string">[  242.287812] [&lt;c0168064&gt;] (default_idle_call) from [&lt;c0168340&gt;] (cpu_startup_entry+0x278/0x344)</span></span><br><span class="line"><span class="string">[  242.296431] [&lt;c0168340&gt;] (cpu_startup_entry) from [&lt;c010dc44&gt;] (secondary_start_kernel+0x114/0x130)</span></span><br><span class="line"><span class="string">[  242.305479] [&lt;c010dc44&gt;] (secondary_start_kernel) from [&lt;0010186c&gt;] (0x10186c)</span></span><br><span class="line"><span class="string">[  242.312704] CRU:</span></span><br><span class="line"><span class="string">[  242.314569] 00000000: 00000b01 9fff03e7 0fff01f3 00000008 00000001 9fff0020 0fff000f 00000008</span></span><br><span class="line"><span class="string">[  242.323105] 00000020: 00000b03 800002ff 0000017f 00000008 00000b01 9fff0251 0fff0128 00000008</span></span><br><span class="line"><span class="string">[  242.331640] 00000040: 00000b00 9fff0270 ffffffff 00000008 00005011 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.340175] 00000060: 00004131 0000b108 00000006 00000200 00008300 00000200 00008383 0bb8ea60</span></span><br><span class="line"><span class="string">[  242.348709] 00000080: 0bb8ea60 0bb8ea60 0000a101 0000279d 00004580 00000200 00000200 00000200</span></span><br><span class="line"><span class="string">[  242.357244] 000000a0: 00000200 0bb8ea60 0bb8ea60 0bb8ea60 0bb8ea60 00000b10 00000900 001f05dc</span></span><br><span class="line"><span class="string">[  242.365779] 000000c0: 00001701 00000707 00000e40 00000701 00008203 00000702 00004141 00004140</span></span><br><span class="line"><span class="string">[  242.374313] 000000e0: 00000101 00001717 00008042 00000303 00000000 00000633 000083e3 00008307</span></span><br><span class="line"><span class="string">[  242.382847] 00000100: 00003200 0bb8ea60 00004141 00000000 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.391379] 00000120: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.399912] 00000140: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.408445] 00000160: 00000000 00000000 00000080 0000c01a 00000000 00000080 00002108 00000004</span></span><br><span class="line"><span class="string">[  242.416978] 00000180: 00000018 00000000 00000008 00000400 00000000 00000013 000001fe 00000003</span></span><br><span class="line"><span class="string">[  242.425511] 000001a0: 00000000 00000000 00000001 00000000 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.434044] 000001c0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.442577] 000001e0: 00000000 00000000 00000000 00640064 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.451108] 00000200: 00000002 00000000 00000002 00000000 00000002 00000000 00000004</span></span><br><span class="line"><span class="string">[  242.458847] PMU:</span></span><br><span class="line"><span class="string">[  242.460707] 00000000: 00000000 00000000 00000200 00000200 00000004 00000004 00000000 80000001</span></span><br><span class="line"><span class="string">[  242.469241] 00000020: 00005dc0 10004000 00005dc0 00005dc0 00005dc0 00000018 00000018 00000018</span></span><br><span class="line"><span class="string">[  242.477774] 00000040: 00000018 00005dc0 00000000 0000000f 00000000 020e0000 00000000 00000008</span></span><br><span class="line"><span class="string">[  242.486307] 00000060: 00020000 00004552 000048a5 00000019 0000555a 00005555 00000015 00000000</span></span><br><span class="line"><span class="string">[  242.494840] 00000080: 00000006 00000004 00000000 00000000 00000000 5242c300 00000000 32817281</span></span><br><span class="line"><span class="string">[  242.503372] 000000a0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.511905] 000000c0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.520437] 000000e0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000</span></span><br><span class="line"><span class="string">[  242.548631] ---[ end Kernel panic - not syncing: hung_task: blocked tasks</span></span><br><span class="line"><span class="string">[  252.355247] ------------[ cut here ]------------</span></span><br><span class="line"><span class="string">[  252.359894] WARNING: CPU: 1 PID: 29 at kernel/watchdog.c:352 watchdog_timer_fn+0x164/0x340()</span></span><br><span class="line"><span class="string">[  252.368332] Watchdog detected hard LOCKUP on cpu 2</span></span><br><span class="line"><span class="string">[  252.372954] Modules linked in:</span></span><br><span class="line"><span class="string">[  252.376234] CPU: 1 PID: 29 Comm: khungtaskd Not tainted 4.4.194 #5</span></span><br><span class="line"><span class="string">[  252.382410] Hardware name: Generic DT based system</span></span><br><span class="line"><span class="string">[  252.387223] [&lt;c010fa88&gt;] (unwind_backtrace) from [&lt;c010b720&gt;] (show_stack+0x20/0x24)</span></span><br><span class="line"><span class="string">[  252.394978] [&lt;c010b720&gt;] (show_stack) from [&lt;c040c9ac&gt;] (dump_stack+0x84/0xa0)</span></span><br><span class="line"><span class="string">[  252.402216] [&lt;c040c9ac&gt;] (dump_stack) from [&lt;c011d3cc&gt;] (warn_slowpath_common+0x98/0xc4)</span></span><br><span class="line"><span class="string">[  252.410315] [&lt;c011d3cc&gt;] (warn_slowpath_common) from [&lt;c011d438&gt;] (warn_slowpath_fmt+0x40/0x48)</span></span><br><span class="line"><span class="string">[  252.419021] [&lt;c011d438&gt;] (warn_slowpath_fmt) from [&lt;c01b2d34&gt;] (watchdog_timer_fn+0x164/0x340)</span></span><br><span class="line"><span class="string">[  252.427645] [&lt;c01b2d34&gt;] (watchdog_timer_fn) from [&lt;c018a024&gt;] (__hrtimer_run_queues+0x1bc/0x31c)</span></span><br><span class="line"><span class="string">[  252.436529] [&lt;c018a024&gt;] (__hrtimer_run_queues) from [&lt;c018a7f8&gt;] (hrtimer_interrupt+0xac/0x1f8)</span></span><br><span class="line"><span class="string">[  252.445321] [&lt;c018a7f8&gt;] (hrtimer_interrupt) from [&lt;c08ee820&gt;] (arch_timer_handler_phys+0x38/0x48)</span></span><br><span class="line"><span class="string">[  252.454292] [&lt;c08ee820&gt;] (arch_timer_handler_phys) from [&lt;c017ac4c&gt;] (handle_percpu_devid_irq+0xd4/0x1a8)</span></span><br><span class="line"><span class="string">[  252.463864] [&lt;c017ac4c&gt;] (handle_percpu_devid_irq) from [&lt;c0176500&gt;] (generic_handle_irq+0x28/0x38)</span></span><br><span class="line"><span class="string">[  252.472916] [&lt;c0176500&gt;] (generic_handle_irq) from [&lt;c017685c&gt;] (__handle_domain_irq+0xb0/0xc4)</span></span><br><span class="line"><span class="string">[  252.481619] [&lt;c017685c&gt;] (__handle_domain_irq) from [&lt;c0101478&gt;] (gic_handle_irq+0x60/0xa4)</span></span><br><span class="line"><span class="string">[  252.489969] [&lt;c0101478&gt;] (gic_handle_irq) from [&lt;c010c114&gt;] (__irq_svc+0x54/0x70)</span></span><br><span class="line"><span class="string">[  252.497446] Exception stack(0xeebdde10 to 0xeebdde58)</span></span><br><span class="line"><span class="string">[  252.502508] de00:                                     eebdde9c 00000001 fd640800 c08ee770</span></span><br><span class="line"><span class="string">[  252.510693] de20: eebdde9c 00005dbf 000025e4 00002648 00000003 c13555d4 066665b0 eebdde6c</span></span><br><span class="line"><span class="string">[  252.518874] de40: eebdde70 eebdde60 c010ee40 c08ee780 a00e0013 ffffffff</span></span><br><span class="line"><span class="string">[  252.525495] [&lt;c010c114&gt;] (__irq_svc) from [&lt;c08ee780&gt;] (arch_counter_get_cntpct+0x10/0x18)</span></span><br><span class="line"><span class="string">[  252.533767] [&lt;c08ee780&gt;] (arch_counter_get_cntpct) from [&lt;c010ee40&gt;] (arch_timer_read_counter_long+0x20/0x28)</span></span><br><span class="line"><span class="string">[  252.543688] [&lt;c010ee40&gt;] (arch_timer_read_counter_long) from [&lt;c040a820&gt;] (read_current_timer+0x30/0x48)</span></span><br><span class="line"><span class="string">[  252.553172] [&lt;c040a820&gt;] (read_current_timer) from [&lt;c040a870&gt;] (__timer_delay+0x38/0x5c)</span></span><br><span class="line"><span class="string">[  252.561357] [&lt;c040a870&gt;] (__timer_delay) from [&lt;c040a8c0&gt;] (__timer_const_udelay+0x2c/0x34)</span></span><br><span class="line"><span class="string">[  252.569712] [&lt;c040a8c0&gt;] (__timer_const_udelay) from [&lt;c01eab3c&gt;] (panic+0x1cc/0x200)</span></span><br><span class="line"><span class="string">[  252.577551] [&lt;c01eab3c&gt;] (panic) from [&lt;c01b253c&gt;] (watchdog+0x334/0x3a0)</span></span><br><span class="line"><span class="string">[  252.584354] [&lt;c01b253c&gt;] (watchdog) from [&lt;c0139fc0&gt;] (kthread+0x104/0x114)</span></span><br><span class="line"><span class="string">[  252.591324] [&lt;c0139fc0&gt;] (kthread) from [&lt;c01074e8&gt;] (ret_from_fork+0x14/0x2c)</span></span><br><span class="line"><span class="string">[  252.598548] ---[ end trace 3bc3e2b7d8dc35f2 ]---</span></span><br></pre></td></tr></table></figure><p>于是我又拿这些信息去网上不停的搜，最后又得出一个猜测——可能是内核有问题！</p><p>因为这是 Firefly 提供的 SDK，我觉得内核肯定是不会有问题的，所以我之前压根没往这方面想过。</p><p>但是结合之前 rkbin 的问题，我又打算试一下，升级一下内核。</p><p>在 Github 找到了瑞芯微官方的 Linux Kernel。</p><p><a href="https://github.com/rockchip-linux/kernel/">https://github.com/rockchip-linux/kernel/</a></p><p>但是这个实在太慢了！受不了！</p><p>于是我又去 Gitee 上找。</p><p>最后随便选了一个 5.10 内核的。</p><p><a href="https://gitee.com/best-embed/rockchip-linux-5.10.198">https://gitee.com/best-embed/rockchip-linux-5.10.198</a></p><p>将这个下载下来，替换掉 SDK 目录的 Kernel。</p><p>然后重新编译，报错，发现是下载的这个 Kernel 的 Makefile 没有配置 GCC 编译器。</p><p>参考原来 SDK 中 Kernel 的 Makefile 配置，在当前这个 Makefile 的 391 行位置加上如下 GCC 相关配置即可。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">ARCH            ?= arm64</span><br><span class="line">ARCH            ?= $(SUBARCH)</span><br><span class="line">ifeq ($(ARCH),arm64)</span><br><span class="line">ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu),)</span><br><span class="line">CROSS_COMPILE   ?= $(srctree)/../prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-</span><br><span class="line">endif</span><br><span class="line">ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9),)</span><br><span class="line">CROSS_COMPILE   ?= $(srctree)/../prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-</span><br><span class="line">endif</span><br><span class="line">endif</span><br><span class="line">ifeq ($(ARCH),arm)</span><br><span class="line">ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf),)</span><br><span class="line">CROSS_COMPILE   ?= $(srctree)/../prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-</span><br><span class="line">endif</span><br><span class="line">ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9),)</span><br><span class="line">CROSS_COMPILE   ?= $(srctree)/../prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androidkernel-</span><br><span class="line">endif</span><br><span class="line">endif</span><br><span class="line">CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:<span class="string">&quot;%&quot;</span>=%)</span><br></pre></td></tr></table></figure><p>继续编译，还是报错，提示缺失 <code>mpc.h</code>、<code>gmp.h</code>。</p><p>安装对应的包就好了，<code>apt-get install libmpc-dev</code>、<code>apt-get install libgmp-dev</code>。</p><p>安装完继续编译，编译没问题了，但是最后一步打包报错，发现是 Python 版本低。</p><p>参考 <a href="https://blog.csdn.net/weixin_41862761/article/details/103890774">https://blog.csdn.net/weixin_41862761&#x2F;article&#x2F;details&#x2F;103890774</a> 升级了一下 Python，这次终于编译打包成功。</p><p>这次编译，我还是用的 BoardConfig-rk3288-evb-rk808.mk 这个板型配置，并且 dts 文件是这个 5.10 内核中自带的未经修改的 dts 文件。</p><p>将编译好的固件刷入板子。</p><p>这次居然启动成功了！并且 HDMI 能显示，网口能正常驱动！</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/Buildroot-HDMI.png"/></div></div><p>我特么之前改了那么久 dts，结果现在告诉我，dts 不用改？问题出在 kernel 版本？一口老血差点吐出来。</p><p>不过 HDMI 虽然能显示，但是有点问题。</p><p>要先开机再接显示器，才能正常显示。不能在未开机之前先接好显示器，否则不显示。</p><p>并且 USB 口也没能正常驱动。</p><h3 style="text-align:center">8. 编译 Ubuntu</h3><p>上面终于编译成功了，但是是 buildroot 的固件，没法 apt 安装软件。</p><p>于是我打算编译一个 Ubuntu 的固件。</p><p>参考 Firefly 文档，下载 Ubuntu 的镜像并解压到 SDK 的目录。</p><p>然后仿照 firefly-rk3288-ubuntu.mk，编写自己的 tvi3001u.mk。</p><p>内容如下。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line">CMD=`<span class="built_in">realpath</span> <span class="variable">$BASH_SOURCE</span>`</span><br><span class="line">CUR_DIR=`<span class="built_in">dirname</span> <span class="variable">$CMD</span>`</span><br><span class="line"></span><br><span class="line"><span class="built_in">source</span> <span class="variable">$CUR_DIR</span>/BoardConfig.mk</span><br><span class="line"></span><br><span class="line"><span class="comment"># Uboot defconfig</span></span><br><span class="line"><span class="built_in">export</span> RK_UBOOT_DEFCONFIG=rk3288</span><br><span class="line"><span class="comment"># Kernel defconfig</span></span><br><span class="line"><span class="built_in">export</span> RK_KERNEL_DEFCONFIG=rockchip_linux_defconfig</span><br><span class="line"><span class="comment"># Kernel dts</span></span><br><span class="line"><span class="built_in">export</span> RK_KERNEL_DTS=rk3288-evb-rk808-linux</span><br><span class="line"><span class="comment"># PRODUCT MODEL</span></span><br><span class="line"><span class="built_in">export</span> RK_PRODUCT_MODEL=FIREFLY_RK3288</span><br><span class="line"><span class="comment"># parameter for GPT table</span></span><br><span class="line"><span class="built_in">export</span> RK_PARAMETER=parameter-ubuntu.txt</span><br><span class="line"><span class="comment"># packagefile for pack image files</span></span><br><span class="line"><span class="built_in">export</span> RK_PACKAGE_FILE=rk3288-ubuntu-package-file</span><br><span class="line"></span><br><span class="line"><span class="comment"># Set rootfs type, including ext2 ext4 squashfs</span></span><br><span class="line"><span class="built_in">export</span> RK_ROOTFS_TYPE=ext4</span><br><span class="line"><span class="comment"># rootfs image path</span></span><br><span class="line"><span class="built_in">export</span> RK_ROOTFS_IMG=ubuntu_rootfs/rk3288_ubuntu_rootfs.img</span><br><span class="line"><span class="comment"># recovery ramdisk</span></span><br><span class="line"><span class="built_in">export</span> RK_RECOVERY_RAMDISK=recovery-arm.cpio.gz</span><br><span class="line"></span><br><span class="line"><span class="comment"># Buildroot config</span></span><br><span class="line"><span class="built_in">export</span> RK_CFG_BUILDROOT=</span><br><span class="line"><span class="comment"># Recovery config</span></span><br><span class="line"><span class="built_in">export</span> RK_CFG_RECOVERY=</span><br><span class="line"><span class="comment">#OEM config</span></span><br><span class="line"><span class="built_in">export</span> RK_OEM_DIR=</span><br><span class="line"><span class="comment">#userdata config</span></span><br><span class="line"><span class="built_in">export</span> RK_USERDATA_DIR=</span><br><span class="line"><span class="comment"># rootfs_system</span></span><br><span class="line"><span class="built_in">export</span> RK_ROOTFS_SYSTEM=ubuntu</span><br></pre></td></tr></table></figure><p>其中 ubuntu_rootfs&#x2F;rk3288_ubuntu_rootfs.img 就是 ubuntu 镜像的位置。</p><p>我下载了 Firefly RK3288 Ubuntu 16 的镜像，解压后，被我重命名为 rk3288_ubuntu_rootfs.img 并放到了 SDK 的 ubuntu_rootfs 目录下，所以位置就是这个。</p><p>至于 dts 文件还是直接用 rk3288-evb-rk808-linux.dts。</p><p>编译完成后刷入，一样启动正常！</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br></pre></td><td class="code"><pre><span class="line">Welcome to Ubuntu 16.04.5 LTS!</span><br><span class="line"></span><br><span class="line">[    8.320124] systemd[1]: Set hostname to &lt;firefly&gt;.</span><br><span class="line">[    8.359073] random: systemd: uninitialized urandom <span class="built_in">read</span> (16 bytes <span class="built_in">read</span>)</span><br><span class="line">[    8.371934] random: systemd-gpt-aut: uninitialized urandom <span class="built_in">read</span> (16 bytes <span class="built_in">read</span>)</span><br><span class="line">[    9.071877] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.</span><br><span class="line">[  OK  ] Listening on /dev/initctl Compatibility Named Pipe.</span><br><span class="line">[    9.080585] systemd[1]: Reached target Swap.</span><br><span class="line">[  OK  ] Reached target Swap.</span><br><span class="line">[    9.090530] systemd[1]: Reached target Remote File Systems (Pre).</span><br><span class="line">[  OK  ] Reached target Remote File Systems (Pre).</span><br><span class="line">[    9.100563] systemd[1]: Listening on udev Kernel Socket.</span><br><span class="line">[  OK  ] Listening on udev Kernel Socket.</span><br><span class="line">[    9.111912] systemd[1]: Created slice System Slice.</span><br><span class="line">[  OK  ] Created slice System Slice.</span><br><span class="line">[    9.121026] systemd[1]: Reached target User and Group Name Lookups.</span><br><span class="line">[  OK  ] Reached target User and Group Name Lookups.</span><br><span class="line">[    9.141698] systemd[1]: Listening on Syslog Socket.</span><br><span class="line">[  OK  ] Listening on Syslog Socket.</span><br><span class="line">[  OK  ] Started Forward Password Requests to Wall Directory Watch.</span><br><span class="line">[  OK  ] Listening on udev Control Socket.</span><br><span class="line">[  OK  ] Reached target Encrypted Volumes.</span><br><span class="line">[  OK  ] Created slice system-serial\x2dgetty.slice.</span><br><span class="line">[  OK  ] Listening on Journal Socket.</span><br><span class="line">         Starting Set console keymap...</span><br><span class="line">         Starting Create Static Device Nodes <span class="keyword">in</span> /dev...</span><br><span class="line">         Starting Remount Root and Kernel File Systems...</span><br><span class="line">         Starting Load Kernel Modules...</span><br><span class="line">[  OK  ] Created slice User and Session Slice.</span><br><span class="line">         Mounting Debug File System...</span><br><span class="line">[  OK  ] Listening on Journal Socket (/dev/log).</span><br><span class="line">         Starting Journal Service...</span><br><span class="line">[  OK  ] Reached target Slices.</span><br><span class="line">[  OK  ] Reached target Remote File Systems.</span><br><span class="line">[  OK  ] Started Remount Root and Kernel File Systems.</span><br><span class="line">[  OK  ] Started Load Kernel Modules.</span><br><span class="line">         Mounting FUSE Control File System...</span><br><span class="line">         Starting Apply Kernel Variables...</span><br><span class="line">         Mounting Configuration File System...</span><br><span class="line">         Starting Load/Save Random Seed...</span><br><span class="line">         Starting udev Coldplug all Devices...</span><br><span class="line">[    9.282254] random: systemd-sysctl: uninitialized urandom <span class="built_in">read</span> (16 bytes <span class="built_in">read</span>)</span><br><span class="line">[    9.287367] random: systemd-journal: uninitialized urandom <span class="built_in">read</span> (16 bytes <span class="built_in">read</span>)</span><br><span class="line">[    9.289639] random: systemd-random-: uninitialized urandom <span class="built_in">read</span> (512 bytes <span class="built_in">read</span>)</span><br><span class="line">[  OK  ] Mounted FUSE Control File System.</span><br><span class="line">[  OK  ] Mounted Debug File System.</span><br><span class="line">[  OK  ] Mounted Configuration File System.</span><br><span class="line">[  OK  ] Started Set console keymap.</span><br><span class="line">[  OK  ] Started Create Static Device Nodes <span class="keyword">in</span> /dev.</span><br><span class="line">[  OK  ] Started Apply Kernel Variables.</span><br><span class="line">[  OK  ] Started Load/Save Random Seed.</span><br><span class="line">[  OK  ] Started Journal Service.</span><br><span class="line">         Starting Flush Journal to Persistent Storage...</span><br><span class="line">         Starting udev Kernel Device Manager...</span><br><span class="line">[  OK  ] Reached target Local File Systems (Pre).</span><br><span class="line">[  OK  ] Reached target Local File Systems.</span><br><span class="line">         Starting Set console font and keymap...</span><br><span class="line">         Starting Tell Plymouth To Write Out Runtime Data...</span><br><span class="line">         Starting Raise network interfaces...</span><br><span class="line">[  OK  ] Started Tell Plymouth To Write Out Runtime Data.</span><br><span class="line">[  OK  ] Started Flush Journal to Persistent Storage.</span><br><span class="line">         Starting Create Volatile Files and Directories...</span><br><span class="line">[  OK  ] Started udev Coldplug all Devices.</span><br><span class="line">[  OK  ] Started Create Volatile Files and Directories.</span><br><span class="line">         Starting Update UTMP about System Boot/Shutdown...</span><br><span class="line">         Starting Network Time Synchronization...</span><br><span class="line">[  OK  ] Started udev Kernel Device Manager.</span><br><span class="line">[  OK  ] Started Update UTMP about System Boot/Shutdown.</span><br><span class="line">[  OK  ] Started Network Time Synchronization.</span><br><span class="line">[  OK  ] Reached target System Time Synchronized.</span><br><span class="line">[  OK  ] Reached target System Initialization.</span><br><span class="line">[  OK  ] Listening on D-Bus System Message Bus Socket.</span><br><span class="line">[  OK  ] Started Daily apt download activities.</span><br><span class="line">[  OK  ] Started Daily apt upgrade and clean activities.</span><br><span class="line">[  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.</span><br><span class="line">[  OK  ] Reached target Sockets.</span><br><span class="line">[  OK  ] Started Daily Cleanup of Temporary Directories.</span><br><span class="line">[  OK  ] Reached target Timers.</span><br><span class="line">[  OK  ] Started Dispatch Password Requests to Console Directory Watch.</span><br><span class="line">[  OK  ] Reached target Paths.</span><br><span class="line">[  OK  ] Reached target Basic System.</span><br><span class="line">         Starting Modem Manager...</span><br><span class="line">         Starting LSB: Set the CPU Frequency Scaling governor to <span class="string">&quot;ondemand&quot;</span>...</span><br><span class="line">         Starting Permit User Sessions...</span><br><span class="line">         Starting System Logging Service...</span><br><span class="line">         Starting Accounts Service...</span><br><span class="line">         Starting Login Service...</span><br><span class="line">         Starting Avahi mDNS/DNS-SD Stack...</span><br><span class="line">[  OK  ] Started Regular background program processing daemon.</span><br><span class="line">         Starting Restore /etc/resolv.conf i...re the ppp <span class="built_in">link</span> was shut down...</span><br><span class="line">[  OK  ] Started D-Bus System Message Bus.</span><br><span class="line">[  OK  ] Started Avahi mDNS/DNS-SD Stack.</span><br><span class="line">         Starting Network Manager...</span><br><span class="line">[  OK  ] Started System Logging Service.</span><br><span class="line">[  OK  ] Started Set console font and keymap.</span><br><span class="line">[  OK  ] Started Permit User Sessions.</span><br><span class="line">[  OK  ] Started Restore /etc/resolv.conf if...fore the ppp <span class="built_in">link</span> was shut down.</span><br><span class="line">[  OK  ] Started Raise network interfaces.</span><br><span class="line">[  OK  ] Started LSB: Set the CPU Frequency Scaling governor to <span class="string">&quot;ondemand&quot;</span>.</span><br><span class="line">[  OK  ] Found device /dev/ttyFIQ0.</span><br><span class="line">[  OK  ] Started Login Service.</span><br><span class="line">         Starting Authenticate and Authorize Users to Run Privileged Tasks...</span><br><span class="line">[  OK  ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.</span><br><span class="line">[  OK  ] Created slice system-systemd\x2dbacklight.slice.</span><br><span class="line">         Starting Load/Save Screen Backlight...htness of backlight:backlight...</span><br><span class="line">         Starting Light Display Manager...</span><br><span class="line">[  OK  ] Created slice system-getty.slice.</span><br><span class="line">         Starting Load/Save RF Kill Switch Status...</span><br><span class="line">[  OK  ] Started Load/Save Screen Backlight Brightness of backlight:backlight.</span><br><span class="line">[  OK  ] Started Authenticate and Authorize Users to Run Privileged Tasks.</span><br><span class="line">[  OK  ] Started Accounts Service.</span><br><span class="line">         Starting Network Manager Script Dispatcher Service...</span><br><span class="line">[  OK  ] Started Network Manager Script Dispatcher Service.</span><br><span class="line">[  OK  ] Started Modem Manager.</span><br><span class="line">         Starting Hostname Service...</span><br><span class="line">[FAILED] Failed to start Hostname Service.</span><br><span class="line">See <span class="string">&#x27;systemctl status systemd-hostnamed.service&#x27;</span> <span class="keyword">for</span> details.</span><br><span class="line">[  OK  ] Started Load/Save RF Kill Switch Status.</span><br><span class="line">         Starting bluetooth-toggle...</span><br><span class="line">[  OK  ] Started Light Display Manager.</span><br><span class="line">[  OK  ] Started bluetooth-toggle.</span><br><span class="line">[   11.411952] rockchip-dp ff970000.dp: failed to <span class="built_in">read</span> max <span class="built_in">link</span> rate</span><br><span class="line">[   11.442239] rockchip-dp ff970000.dp: failed to <span class="built_in">read</span> max <span class="built_in">link</span> rate</span><br><span class="line">[  OK  ] Created slice User Slice of firefly.</span><br><span class="line">         Starting User Manager <span class="keyword">for</span> UID 1000...</span><br><span class="line">[  OK  ] Started Session c1 of user firefly.</span><br><span class="line">[  OK  ] Started User Manager <span class="keyword">for</span> UID 1000.</span><br><span class="line">         Starting RealtimeKit Scheduling Policy Service...</span><br><span class="line">[FAILED] Failed to start RealtimeKit Scheduling Policy Service.</span><br><span class="line">See <span class="string">&#x27;systemctl status rtkit-daemon.service&#x27;</span> <span class="keyword">for</span> details.</span><br><span class="line">         Starting Disk Manager...</span><br><span class="line">[  OK  ] Started Disk Manager.</span><br><span class="line">         Starting Bluetooth service...</span><br><span class="line">[  OK  ] Started Bluetooth service.</span><br><span class="line">[  OK  ] Started Network Manager.</span><br><span class="line">[  OK  ] Reached target Network.</span><br><span class="line">         Starting /etc/rc.local Compatibility...</span><br><span class="line">         Starting OpenBSD Secure Shell server...</span><br><span class="line">[  OK  ] Started /etc/rc.local Compatibility.</span><br><span class="line">         Starting Hold <span class="keyword">until</span> boot process finishes up...</span><br><span class="line">[  OK  ] Started Hold <span class="keyword">until</span> boot process finishes up.</span><br><span class="line">[  OK  ] Started Serial Getty on ttyFIQ0.</span><br><span class="line">         Starting Set console scheme...</span><br><span class="line">[  OK  ] Started Getty on tty1.</span><br><span class="line">[  OK  ] Reached target Login Prompts.</span><br><span class="line">[  OK  ] Started Set console scheme.</span><br><span class="line">[  OK  ] Started OpenBSD Secure Shell server.</span><br><span class="line">[  OK  ] Reached target Multi-User System.</span><br><span class="line">[  OK  ] Reached target Graphical Interface.</span><br><span class="line">         Starting Update UTMP about System Runlevel Changes...</span><br><span class="line">[  OK  ] Started Update UTMP about System Runlevel Changes.</span><br><span class="line"></span><br><span class="line">Ubuntu 16.04.5 LTS firefly ttyFIQ0</span><br><span class="line"></span><br><span class="line">firefly login: root (automatic login)</span><br><span class="line"></span><br><span class="line">Last login: Thu Feb 11 16:28:28 UTC 2016 on ttyFIQ0</span><br><span class="line">Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 5.10.198+ armv7l)</span><br><span class="line"></span><br><span class="line"> * Documentation:  https://help.ubuntu.com</span><br><span class="line"> * Management:     https://landscape.canonical.com</span><br><span class="line"> * Support:        https://ubuntu.com/advantage</span><br><span class="line">root@firefly:~<span class="comment"># </span></span><br></pre></td></tr></table></figure><p>看到这个 Welcome to Ubuntu 16.04.5 LTS! 别提有多开心了。</p><p>并且 HDMI 可以显示，但是和 Buildroot 一样有问题。</p><p>USB 口也没正常驱动。</p><p>但是网口正常，可以自由安装软件。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/RK3288-TVI3001U-Flashing-And-Firmware-Compilation/Ubuntu-HDMI.png"/></div></div><h3 style="text-align:center">写在最后</h3><p>说实话，折腾这个板子是真的折腾的心累。</p><p>不过我的运气也还算好了，升级 kernel 后用 SDK 自带的配置编译得到的固件刚好能用。</p><p>都不需要修改设备树或者移植驱动，免去了很多麻烦。</p><p>网上关于怎么直接移植一块 RK3288 板子固件的资料和教程，可以说是几乎没有。</p><p>搜到的教程，用到的板子几乎都是那些正经开发板，所以是直接基于开发板官方 SDK 来编译的。</p><p>所以当我编译出的固件无法使用时，我压根不知道问题所在，一味地以为是 dts 的问题，最后发现不是。</p><p>所以我写下这篇文章。</p><p>一来记录一下，要是以后自己忘了，还能捡起来看。</p><p>二来是希望这篇文章能帮助他其他喜欢玩板子，想折腾板子的网友。</p><p>也希望各位大佬能不吝分享，编译出一些好玩的固件，分享出来、写下一些教程，帮助想要玩板子的新人。</p><p>希望这些本该退休的板子，也能在别的地方，发挥出它的作用。</p><br/><center><small>——end——</small></center>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 style=&quot;text-align:center&quot;&gt;写在最前&lt;/h3&gt;

&lt;p&gt;这篇文章记录我最近折腾一块 RK3288 板子，为其编译固件的过程，最终在我的不懈努力下，也是成功编译出了可以使用的固件。&lt;/p&gt;
&lt;br/&gt;

&lt;p&gt;最近迷上了玩硬件。&lt;/p&gt;
&lt;p&gt;前不久</summary>
      
    
    
    
    <category term="RK3288" scheme="http://www.5had0w.com/categories/RK3288/"/>
    
    
    <category term="Linux" scheme="http://www.5had0w.com/tags/Linux/"/>
    
    <category term="Ubuntu" scheme="http://www.5had0w.com/tags/Ubuntu/"/>
    
    <category term="Firefly" scheme="http://www.5had0w.com/tags/Firefly/"/>
    
    <category term="RK3288" scheme="http://www.5had0w.com/tags/RK3288/"/>
    
    <category term="TVI3001U" scheme="http://www.5had0w.com/tags/TVI3001U/"/>
    
    <category term="Rockchip" scheme="http://www.5had0w.com/tags/Rockchip/"/>
    
    <category term="刷机" scheme="http://www.5had0w.com/tags/%E5%88%B7%E6%9C%BA/"/>
    
    <category term="固件编译" scheme="http://www.5had0w.com/tags/%E5%9B%BA%E4%BB%B6%E7%BC%96%E8%AF%91/"/>
    
    <category term="慧为智能" scheme="http://www.5had0w.com/tags/%E6%85%A7%E4%B8%BA%E6%99%BA%E8%83%BD/"/>
    
    <category term="PhoenixOS" scheme="http://www.5had0w.com/tags/PhoenixOS/"/>
    
    <category term="凤凰OS" scheme="http://www.5had0w.com/tags/%E5%87%A4%E5%87%B0OS/"/>
    
    <category term="Buildroot" scheme="http://www.5had0w.com/tags/Buildroot/"/>
    
    <category term="瑞芯微" scheme="http://www.5had0w.com/tags/%E7%91%9E%E8%8A%AF%E5%BE%AE/"/>
    
    <category term="SDK" scheme="http://www.5had0w.com/tags/SDK/"/>
    
  </entry>
  
  <entry>
    <title>《洞见写作》学习笔记</title>
    <link href="http://www.5had0w.com/posts/2648024.html"/>
    <id>http://www.5had0w.com/posts/2648024.html</id>
    <published>2024-04-22T10:15:23.000Z</published>
    <updated>2024-04-22T13:33:26.721Z</updated>
    
    <content type="html"><![CDATA[<h2 id="第一章-人人都能复制的写作能力"><a href="#第一章-人人都能复制的写作能力" class="headerlink" title="第一章 人人都能复制的写作能力"></a>第一章 人人都能复制的写作能力</h2><h3 id="第-1-节-入门新媒体写作"><a href="#第-1-节-入门新媒体写作" class="headerlink" title="第 1 节 入门新媒体写作"></a>第 1 节 入门新媒体写作</h3><h4 id="新媒体写作的三个关键认知"><a href="#新媒体写作的三个关键认知" class="headerlink" title="新媒体写作的三个关键认知"></a>新媒体写作的三个关键认知</h4><p><strong>1. 新媒体写作是大众化的表达</strong></p><p>新媒体写作的定义：建立在分析读者喜好的前提下，创造出有吸引力的内容的一种方式。</p><p>语境需要大众化的表达，选择能引起大众共鸣的内容，读者能在文章中看到自己，才会有点赞转发留言的欲望。</p><p><strong>2. 人人都可以是新媒体写作者</strong></p><p>新媒体文章通常篇幅不长，讲究 “短、平、快” 地切中用户痛点，并且数据好的文章背后都有共同的规律，找到这个规律，就能快速入门新媒体写作。</p><p>新媒体写作是一项有利的自我投资，它既能提升你的文笔、逻辑思考能力，又能帮你掌握以 “用户思维” 为基础的内容创造方法论。</p><p><strong>3. 新媒体写作是互动式写作</strong></p><p>了解读者想看什么之后再进行创作，而不是闭门造车，自说自话。</p><p>说出一个能让人认同或能产生共鸣的观点，并用素材或故事论证它。</p><p>明确目标读者，根据目标读者来创作内容，内容要吸引读者，对读者有用。</p><h4 id="新媒体内容创作的三个底层思维"><a href="#新媒体内容创作的三个底层思维" class="headerlink" title="新媒体内容创作的三个底层思维"></a>新媒体内容创作的三个底层思维</h4><p>用户思维、产品思维、社交思维。</p><p><strong>1. 用户思维</strong></p><p>站在用户的角度考虑问题，思考用户在阅读文章中的每一步获得的体验。</p><p>主题是不是读者想看的？这样写够不够精彩？怎么样排版才能让读者看得更舒服？</p><p>用户思维体现在选题、逻辑、句子中。设计每一步时，都要考虑文章写完后读者读起来是什么感受。</p><p><strong>2. 产品思维</strong></p><p>产品思维，就是思考你的产品能解决用户什么需求的思维。</p><p>以作者的思路审视文章能传达什么，能给读者带来什么，把自己的文章看成一个产品，以产品思维来设计文章。</p><p>新媒体文章主要满足读者精神上的需求。</p><p>一是情感上的需求，人有喜怒哀乐，有想要发泄的情感，有焦虑，也有对美好生活的向往。从读者的情感需求出发，文章主要有帮助读者发声、宣泄情感及抚慰心灵的作用。</p><p>二是认知上的需求，人都会想知道这个世界发生了什么，有什么东西是自己不知道的，比如一些旅游景点，一些有趣的定律。</p><p>思考自己的文章到底能解决读者的什么需求，在进行有针对性的撰写。</p><p><strong>3. 社交思维</strong></p><p>社交思维就是给读者提供一个转发的理由。</p><p>社交属性：致XX、写给XX</p><p>地域属性：XX人原来是这样的、XX人到底怎么怎么样</p><p>时间属性：XX月，你好、XX节，你XXX了吗</p><h3 id="第-2-节-找准三大价值，掌握爆文核心逻辑"><a href="#第-2-节-找准三大价值，掌握爆文核心逻辑" class="headerlink" title="第 2 节 找准三大价值，掌握爆文核心逻辑"></a>第 2 节 找准三大价值，掌握爆文核心逻辑</h3><p>三个问题：</p><ul><li>这篇文章跟读者有什么关系？</li><li>读者为什么要看你这篇文章？</li><li>读者读完你的这篇文章能有什么收获？</li></ul><p>文章要给读者带来价值，满足读者需求的、能够为读者提供价值的文章才会被广泛传播。</p><h4 id="情绪价值"><a href="#情绪价值" class="headerlink" title="情绪价值"></a>情绪价值</h4><p>情绪价值可以理解为跟读者产生情绪上的共鸣，包括开心、愤怒、悲伤、失落等情绪。</p><p>新媒体文章就是通过洞察普通人身上的情绪和情感，站在他们的角度写出让他们觉得有共鸣的文字。</p><p>情绪价值分为：强烈情感型、温柔抚慰型、自我恋爱型。</p><p><strong>1. 强烈情感型</strong></p><p>强烈情感型指的是某些人或某些事能使你产生强烈的爱憎鲜明的情感，而文章能帮你把这些情绪表达出来。</p><p>用文章说清人内心的爱憎，让读者与文章共情，帮读者说出他心里的情绪。</p><p>比较适合用于和负面新闻相关或者情绪起伏比较大的热点文、观点文。</p><p><strong>2. 温柔抚慰型</strong></p><p>用文字的力量去抚慰读者的负面情绪。</p><p>读者遭遇不顺或者被什么事情困扰时，可以让读者获得心理上的安慰，这也是在为读者提供情绪价值。</p><p>主要表达一些人生观点，说理感不重，文字富有美感。</p><p><strong>3. 自我怜爱型</strong></p><p>站在读者的角度，替读者表达那些不被人理解的情绪和心声。</p><p>每个人内心都会有一些自我伤感的情绪，想要被人理解懂得，也需要自己抚慰自己的情绪，自我怜爱型的文章的作用就是帮读者抒发这种想被人理解的情绪。</p><p>表达读者内心那些不为人知的情绪，让读者产生共鸣，觉得有人懂自己，从而得到一点慰藉。</p><p>洞察普通人身上的小情绪，用文章替他们说出他们内心深处的话。</p><p>方法：</p><ul><li>多用第二人称</li><li>多用金句</li></ul><h4 id="认知价值"><a href="#认知价值" class="headerlink" title="认知价值"></a>认知价值</h4><p>提供一个新的观点，更新读者对某一问题的看法，让他们觉得学到了新的东西。</p><p>可以是一个没听过的故事、一个原来没有掌握的方法、一个之前没有思考过的角度、一个给人启发的新观点。</p><p>让读者产生认知增量，给读者提供认知价值。</p><p><strong>1. 社会实验</strong></p><p>XXX效应，根据这一实验，最后引出一个结论。</p><p><strong>2. 心理学概念</strong></p><p>以一些心理学概念作为文章的切入点或支撑论点的素材。</p><p>引用心理学概念会让文章显得更加专业，同时也相当于给读者科普了心理学知识，给读者产生了一定的认知增量。</p><h4 id="实用价值"><a href="#实用价值" class="headerlink" title="实用价值"></a>实用价值</h4><p>写的内容对读者的实际生活有帮助，对他们有用。</p><p>实用类文章干货比较多，所以可能写得生硬、枯燥乏味。</p><p><strong>1. 语言生动有趣</strong></p><p>语言要生动，不要干巴巴的讲，适当用一些场景化的语言或比喻。</p><p><strong>2. 以漫画形式展现</strong></p><h3 id="第-3-节-用五步法拆解新媒体文章"><a href="#第-3-节-用五步法拆解新媒体文章" class="headerlink" title="第 3 节 用五步法拆解新媒体文章"></a>第 3 节 用五步法拆解新媒体文章</h3><h4 id="选择一篇优质文章"><a href="#选择一篇优质文章" class="headerlink" title="选择一篇优质文章"></a>选择一篇优质文章</h4><p><strong>1. 最新 “出炉” 的热文</strong></p><p>撰写要求高，写作角度需要创新，出稿速度要快。</p><p>时刻关注热点文、拆解热点文，及时了解最新热点话题。</p><p>培养好新媒体敏感度，掌握热点文写作技巧，才更有机会写出爆款文章。</p><p>热点文获取渠道：</p><ul><li>公众号 “巨土文化” 推送</li><li>“新榜” 热文内容</li></ul><p><strong>2. 全网 “刷屏” 的爆款文章</strong></p><p>思考四个问题：</p><ul><li>文章切中了读者什么痛点？</li><li>文章背后的情绪点是什么？</li><li>这么多读者转发文章的目的是什么？</li><li>为什么能达到全网 “刷屏” 的效果？</li></ul><p><strong>3. 结构巧妙的文章</strong></p><p>遇到结构比较新、比较巧妙的文章，可以通过拆解，学习他的结构，运用到之后的写作中。</p><h4 id="拆标题"><a href="#拆标题" class="headerlink" title="拆标题"></a>拆标题</h4><p><strong>1. 巧用数字</strong></p><p>这个最简单了，没什么好说的。</p><p><strong>2. 场景带入</strong></p><p>在标题里描写一些场景、细节，往往会使内容更真实，也更容易增加读者的代入感。</p><p>《半夜撞见老公上厕所，我泣不成声》</p><p>第一人称的标题会使得读者充满好奇，想知道 “我” 身上发生了什么。</p><p><strong>3. 制造对比</strong></p><p>标题中使用对比元素更容易引起人的好奇心，而且对比元素制造的冲突越强烈，读者的点击欲望就越强。</p><p>《致孩子：自律者出众，懒散者出局》</p><p><strong>4. 制造悬念</strong></p><p>加省略号，说话说半句，吸引读者点击进来。</p><p><strong>5. 借助热点和名人效应</strong></p><p>《程序员必读的十本书》VS《张小龙推荐程序员必读的十本书》</p><h4 id="拆选题"><a href="#拆选题" class="headerlink" title="拆选题"></a>拆选题</h4><p><strong>1. 目标群体</strong></p><p>厘清选题的目标群体，弄清楚这篇文章是写给谁看的。</p><p>拆解选题的目标群体，就是在思考 “读者需要看到什么”，明确文章选题对象，才能 “对症下药”，写出他们的心声或为他们提供解决问题的办法。</p><p><strong>2. 痛点</strong></p><p>指的是读者极度关注、容易产生共鸣的内容。</p><p>痛点选题需要具备以下两个要素：</p><ul><li><strong>普适性强</strong> 内容要适合大部分人，符合普罗大众的口味，而非只会让小部分人产生共鸣。比如 “摆脱抑郁症” 和 “学会放下”，后者的普适性强一点，更加大众。</li><li><strong>落地具象</strong> 具体、形象的词汇才能被读者感知。以 “成功” 和 “自律” 为例，前者的定义比较模糊，每个人对成功都有不同的看法，而后者可以具象化，比如早睡早起，锻炼身体等。</li></ul><h4 id="拆行文结构"><a href="#拆行文结构" class="headerlink" title="拆行文结构"></a>拆行文结构</h4><p>把写文章看成建房子，那么行文结构就是钢筋混凝土，就是房子的筋骨，撑起了整篇文章。</p><p>行文结构即文章主体部分的行文逻辑、段落架构。拆行文结构就是从头到尾梳理文章的主体结构，找出并列举每个部分都在阐述什么观点。</p><p>主要包括以下几个板块。</p><ul><li><strong>开头</strong>：用来吸引读者，引出文章的主题。</li><li><strong>第一、二、三部分</strong>：最能体现文章的逻辑结构，比如并列式、递进式或其他形式。</li><li><strong>结尾</strong>：用来升华主题。</li></ul><p>拆行文结构时，需要清晰掌握文章的每个板块在讲什么，分析这个结构的设计与构思好在哪里，然后用自己的话把文章大概内容说出来。</p><h4 id="拆素材、金句"><a href="#拆素材、金句" class="headerlink" title="拆素材、金句"></a>拆素材、金句</h4><p><strong>1. 拆素材</strong></p><p>找出素材，并简单概括，同时思考四个问题：</p><ul><li>这个素材好在哪里？</li><li>是正面还是反面论述？</li><li>和主题贴合度高不高？</li><li>素材新鲜度如何？</li></ul><p><strong>2. 拆金句</strong></p><p>金句就是短小精悍、朗朗上口，戳中读者情绪或者引发读者思考的，能让人记住并且传播的句子。</p><p>文中排版中加粗加黑，重点强调的句子就是金句；评论区里大部分读者复制留言的原文句子，就是金句；戳中你的痛点、情绪的句子，就是金句。</p><h4 id="进阶学习"><a href="#进阶学习" class="headerlink" title="进阶学习"></a>进阶学习</h4><p><strong>1. 集中进行拆解和对比分析</strong></p><p>拆解后集中系统地进行对比分析，比单篇拆解更有效果，这样更能系统的掌握某类文章的规律。</p><p>把针对同一热点从不同角度切入的文章放在一起对比。</p><p><strong>2. 积累素材，建立模块学习思维</strong></p><p>好的标题、素材、金句都可以放到自己的素材库。</p><p><strong>3. 选题延伸</strong></p><p>在旧选题的基础之上做延伸，例：</p><p>《修炼自己》——《认清自己》《管理自己》《丰富自己》<br>《和正能量的人在一起，就是最好的养生》——《和XXX的人在一起，就是最好的养生》</p><p><strong>4. 拆文模板</strong></p><table><thead><tr><th><strong>序号</strong></th><th><strong>要素</strong></th><th><strong>要点</strong></th></tr></thead><tbody><tr><td>1</td><td>标题</td><td>拆标题：巧用数字 &#x2F; 场景代入 &#x2F; 制造对比 &#x2F; 设置悬念 &#x2F; 借助热点和名人效应……</td></tr><tr><td>2</td><td>选题</td><td>目标群体<br/>痛点<br/>主题观点</td></tr><tr><td>3</td><td>行文结构</td><td>开头……<br/>第一部分……<br/>第二部分……<br/>第三部分……<br/>结尾……<br/></td></tr><tr><td>4</td><td>素材、金句</td><td>素材及素材分析<br/>金句及金句分析</td></tr><tr><td>5</td><td>语言风格</td><td>语言风格及语言风格分析</td></tr></tbody></table><h2 id="第二章-如何进行选题策划"><a href="#第二章-如何进行选题策划" class="headerlink" title="第二章 如何进行选题策划"></a>第二章 如何进行选题策划</h2><h3 id="第-1-节-选题的来源和属性"><a href="#第-1-节-选题的来源和属性" class="headerlink" title="第 1 节 选题的来源和属性"></a>第 1 节 选题的来源和属性</h3><p>选题要从读者出发，对读者有吸引力。</p><h4 id="选题的灵感"><a href="#选题的灵感" class="headerlink" title="选题的灵感"></a>选题的灵感</h4><p><strong>1. 调动自己的生活经验</strong></p><p>生活本身就是一个丰富的选题库和素材库，多观察，多体悟，做生活的 “有心人”。</p><p>源于生活的文章，永远是最打动人的。</p><p><strong>2. 明确万事万物皆可入文</strong></p><p>世界上万事万物都有可能成为选题的来源。</p><p>上班路上无意听到的广播、和同事聊天时听到的故事、阅读时发现的绝妙金句，甚至是梦中闪现的场景，都可以是选题的来源。</p><p><strong>3. 充分了解自己的天赋爱好</strong></p><p>根据自己喜欢、擅长的事情来帮助自己找选题定位。</p><h4 id="选题的“情理用知”属性"><a href="#选题的“情理用知”属性" class="headerlink" title="选题的“情理用知”属性"></a>选题的“情理用知”属性</h4><p><strong>1. 情：情绪</strong></p><p>通过写作影响读者的情绪，能够让读者产生共鸣并认可的文章。</p><p>替读者说出内心想说的话，满足他们的情绪需求，让他们感觉有人懂自己。</p><p>了解不同群体所面对的处境，设身处地的想他们所想，挖掘他们的情绪痛点，然后用细腻动人的语言传递你的观点。</p><p>不同年龄段、不同群体、不同身份，找到一个切入点，发掘这类人的情绪痛点。</p><p><strong>2. 理：道理</strong></p><p>提出一个对读者的生活有用且能够被他们认同的道理。</p><p>因为道理很多过着过着就忘了，所以需要有人时时刻刻提醒我们。</p><p>注意以下三点：</p><ul><li>不能干货满满但枯燥，没人喜欢枯燥的内容。</li><li>不要以高高在上的口吻来写，要站在跟读者平等的位置上。</li><li>不能是太过浅显的大道理，要写有深度、让读者有获得感的道理。</li></ul><p><strong>3. 用：实用</strong></p><p>写的内容对读者的生活有实际帮助，对读者有用。</p><p>一些具体的生活经验、事情的解决办法，读者可以直接拿来用的。</p><p><strong>4. 知：知道</strong></p><p>提供一个新观点，更新读者对某一问题的看法，让他们觉得学到了新东西，知道了新的信息，获得认知增量。</p><p>之前没听过的故事、没掌握的方法、没想到的思考角度、给人启发的新观点。</p><p>不要写一些人尽皆知的东西，深度上强于读者，内容上贴近读者，让他们读完觉得很有收获。</p><h3 id="第-2-节-新媒体写作四大选题公式"><a href="#第-2-节-新媒体写作四大选题公式" class="headerlink" title="第 2 节 新媒体写作四大选题公式"></a>第 2 节 新媒体写作四大选题公式</h3><h4 id="爆点式选题：爆点-观点"><a href="#爆点式选题：爆点-观点" class="headerlink" title="爆点式选题：爆点 + 观点"></a>爆点式选题：爆点 + 观点</h4><p>从爆点切入撰写文章，爆点一般分为：</p><ul><li>明星热点</li><li>社会新闻</li><li>爆红综艺（影视剧）</li><li>自制故事</li></ul><p>判断爆点有没有能量，看三点：</p><ul><li>有没有普适性，即这个爆点涉及的内容是否关乎每个人或者大多数人</li><li>是否牵涉重大利益，包括：安全、财富、善恶、特定群体（中年&#x2F;小孩&#x2F;老师&#x2F;外卖员），和重大利益相关的内容一般关注度都会更高</li><li>能否引发情感共鸣，包括：愤怒、怀旧、愧疚、暖心、焦虑</li></ul><h4 id="关系张力式选题：“人-他人”-或-“人-自己”"><a href="#关系张力式选题：“人-他人”-或-“人-自己”" class="headerlink" title="关系张力式选题：“人 + 他人” 或 “人 + 自己”"></a>关系张力式选题：“人 + 他人” 或 “人 + 自己”</h4><p>人和自己的关系，人和他人的关系，以人与人之前的关系，各种关系之间可能遇到的问题作为痛点。</p><h4 id="框架式选题：观点-1-观点-2-观点-3"><a href="#框架式选题：观点-1-观点-2-观点-3" class="headerlink" title="框架式选题：观点 1 + 观点 2 + 观点 3"></a>框架式选题：观点 1 + 观点 2 + 观点 3</h4><p>没啥好说的，用几个小观点来辅助论证大观点。</p><h4 id="载体式选题：载体-观点"><a href="#载体式选题：载体-观点" class="headerlink" title="载体式选题：载体 + 观点"></a>载体式选题：载体 + 观点</h4><p>电影、电视、人物、书籍等作为载体，从中延伸出观点。</p><h3 id="第-3-节-策划优质选题的五个黄金法则"><a href="#第-3-节-策划优质选题的五个黄金法则" class="headerlink" title="第 3 节 策划优质选题的五个黄金法则"></a>第 3 节 策划优质选题的五个黄金法则</h3><h4 id="选题要有普适性"><a href="#选题要有普适性" class="headerlink" title="选题要有普适性"></a>选题要有普适性</h4><p>需要是一个大家都关注的，比较大众化的选题。</p><h4 id="选题要切中痛点"><a href="#选题要切中痛点" class="headerlink" title="选题要切中痛点"></a>选题要切中痛点</h4><p>经济、家庭、教育、事业、两性关系等等，切中痛点，也就是某一类人会遇到的问题来写。</p><h4 id="选题要引发共鸣"><a href="#选题要引发共鸣" class="headerlink" title="选题要引发共鸣"></a>选题要引发共鸣</h4><p>读者看到你的文章，能想到自己，这就是引发共鸣。</p><h4 id="选题要有讨论度"><a href="#选题要有讨论度" class="headerlink" title="选题要有讨论度"></a>选题要有讨论度</h4><p>蹭热点。</p><h4 id="选题要提供新知"><a href="#选题要提供新知" class="headerlink" title="选题要提供新知"></a>选题要提供新知</h4><p>刷新用户认知，让他们看到以前从未看到的东西，知道以前不知道的东西。</p><h3 id="第-4-节-选题创新的两大技巧"><a href="#第-4-节-选题创新的两大技巧" class="headerlink" title="第 4 节 选题创新的两大技巧"></a>第 4 节 选题创新的两大技巧</h3><h4 id="人无我有——创新"><a href="#人无我有——创新" class="headerlink" title="人无我有——创新"></a>人无我有——创新</h4><p><strong>1. 否定思维</strong></p><p>别人觉得这观点正确，觉得这个好，觉得是对的，我就反着来。</p><p>但是最后要圆回来，如果这个观点确实是对的，你不能真的强行说是错的。</p><p><strong>2. 类比思维</strong></p><p>爆款选题换关键词、换场景。</p><p><strong>3. 金句思维</strong></p><p><strong>4. 圈层思维，针对某一圈层的人来发布文章。</strong></p><h4 id="人有我优——微创新"><a href="#人有我优——微创新" class="headerlink" title="人有我优——微创新"></a>人有我优——微创新</h4><p><strong>1. 加法思维</strong></p><ul><li>加载体：人物、书籍、影视</li><li>加热点：热点新闻</li></ul><p><strong>2. 对比思维</strong></p><p>正正对比、正反对比</p><p><strong>3. 否定思维</strong></p><p>肯定变否定</p><p>努力赚钱，才能过上想要的生活 vs 不努力赚钱，你永远都过不上想要的生活。</p><h2 id="第三章-如何梳理文章框架"><a href="#第三章-如何梳理文章框架" class="headerlink" title="第三章 如何梳理文章框架"></a>第三章 如何梳理文章框架</h2><h3 id="第-1-节-设计文章框架的方法"><a href="#第-1-节-设计文章框架的方法" class="headerlink" title="第 1 节 设计文章框架的方法"></a>第 1 节 设计文章框架的方法</h3><h4 id="新手常见写作结构问题"><a href="#新手常见写作结构问题" class="headerlink" title="新手常见写作结构问题"></a>新手常见写作结构问题</h4><p><strong>1. 散：结构松散，文章像流水账，分不清重点</strong></p><p><strong>2. 乱：逻辑混乱，想到哪里写到哪里</strong></p><p><strong>3. 套路化：写作模式单一，文章套路化</strong></p><h4 id="三个基础写作结构"><a href="#三个基础写作结构" class="headerlink" title="三个基础写作结构"></a>三个基础写作结构</h4><p><strong>1. 三明治结构</strong></p><p>总——分——总：开头、中间（分论点1、分论点2、分论点3）、结尾</p><p>注意点：</p><ol><li>分论点结构要清晰</li></ol><p>正文中的分论点结构，可以选择并列式或者递进式。如果使用并列式结构，分论点之间需要界限清晰，角度彼此不重复，保证每个角度都是从不同的维度解答主题，但所列的论点要服务于同一个主题。</p><p>并列式结构的每个分论点给读者的感受比较平均，每个分论点的力度都差不多，而递进式结构则是慢慢加重力量，让读者一点点深入，认同观点。</p><ol start="2"><li>小标题出彩更加分</li></ol><p>小标题取得好，能吸引读者不停地看下去。</p><p><strong>2. 对比结构</strong></p><p>开头——反面论证——正面论证——结尾</p><p>注意点：</p><ol><li>建议先写反面事例，再写正面事例。类似 “先苦后甜”，反面事例的衬托下，正面事例会更加突出。当然，这并不绝对。</li><li>反面事例最好不要多于正面事例。毕竟正能量更加具有传播属性，反面事例太多，则负能量太多，传播属性降低。</li><li>结尾尽量给读者一些实用的方法论。不仅要通过现象发现问题、分析问题，也要学会解决问题。分析完利弊后，给读者提供行之有效的方法论，起到温暖、治愈、帮助的作用。</li></ol><p><strong>3. 罗列式结构</strong></p><ol><li>多点罗列</li><li>图片素材罗列</li></ol><h3 id="第-2-节-千万级大号编辑常用的写作框架"><a href="#第-2-节-千万级大号编辑常用的写作框架" class="headerlink" title="第 2 节 千万级大号编辑常用的写作框架"></a>第 2 节 千万级大号编辑常用的写作框架</h3><h4 id="SCQA-结构"><a href="#SCQA-结构" class="headerlink" title="SCQA 结构"></a>SCQA 结构</h4><p>情景、冲突、疑问、回答</p><p>提出问题——分析问题——解决问题</p><h4 id="故事类结构"><a href="#故事类结构" class="headerlink" title="故事类结构"></a>故事类结构</h4><p>注意点：</p><ol><li>故事情节要和主题高度贴合</li><li>故事叙述要有重点，节奏要快慢得当。该凸显重点的地方慢一点，多一些描述，次要的地方加快节奏，一笔带过。有意识的编排自己的文章。</li><li>要有起承转合，语言要有场景感。写故事要有起伏，人物经历和情节发展有好有坏，才能调动读者的情绪，可以再现故事发生时的场景，适当用一些对话使文章更加生动。</li></ol><p><strong>1. 单个故事形式</strong></p><ol><li>载体故事：人物故事载体、书籍故事载体、影视作品载体。</li><li>自制故事：用自己或者身边人的故事，读者会觉得更加贴切。</li></ol><p><strong>2. 多个故事形式</strong></p><ol><li>故事+观点结构：故事1+观点、故事2+观点、故事3+观点</li><li>故事+落点结构：故事1+故事2+故事3+观点1+观点2+观点3</li></ol><h3 id="第-3-节-爆款文章标题打磨的五个要点和八个方法"><a href="#第-3-节-爆款文章标题打磨的五个要点和八个方法" class="headerlink" title="第 3 节 爆款文章标题打磨的五个要点和八个方法"></a>第 3 节 爆款文章标题打磨的五个要点和八个方法</h3><h4 id="爆款文章标题打磨的五个要点"><a href="#爆款文章标题打磨的五个要点" class="headerlink" title="爆款文章标题打磨的五个要点"></a>爆款文章标题打磨的五个要点</h4><p><strong>1. 激发好奇心</strong></p><ol><li>提出疑问。例：《蛋黄还是蛋白好，大多数人都吃错鸡蛋了》、《那个决定不考大学的女孩，最后怎么样了》</li><li>制造反差。《“生性凉薄”的人，最值得深交》、《层次越高的人，越会“以貌取人”》。强烈的反差形成激烈的冲突，并且所持观点与常识性观点相悖。</li><li>留下悬念。《聊天这样结尾的人，一定很爱你》《父母最失败的3种教育方式，就是发脾气、讲道理和······》</li></ol><p><strong>2. 观点鲜明</strong></p><p>爱憎分明、观点明确，让人一眼能看到作者的情绪。《垃圾婚姻，不如单身》、《都是第一次做人，我凭什么让着你》</p><p><strong>3. 情绪共鸣</strong></p><p>引发读者情绪，帮读者说出他想说但是没有说出口的话，让读者与你产生共鸣。《因为无所依仗，所以必须强大》、《孩子，你不想苦一辈子，就要先苦一阵子》</p><p><strong>4. 直戳痛点</strong></p><p>精准击中读者的每个痛点。《你永远赚不到超出认知范围以外的钱》、《表情包用得越来越多，我们聊天却越来越少》</p><p><strong>5. 制造利益点</strong></p><p>价值吸引，一般是一些什么技巧，资源之类的。</p><h4 id="爆款文章标题打磨的八个方法"><a href="#爆款文章标题打磨的八个方法" class="headerlink" title="爆款文章标题打磨的八个方法"></a>爆款文章标题打磨的八个方法</h4><p><strong>1. 巧用数字</strong></p><p><strong>2. 场景代入</strong></p><p><strong>3. 制造对比</strong></p><p>90后还在母胎单身，00后已经分手6次了</p><p><strong>4. 善用金句</strong></p><p><strong>5. 贴标签</strong></p><p>80后、中年人、爱发朋友圈的人、老人</p><p><strong>6. 设置悬念</strong></p><p><strong>7. 借助热点</strong></p><p><strong>8. 利用名人效应</strong></p><h2 id="第四章-如何提升行文质量"><a href="#第四章-如何提升行文质量" class="headerlink" title="第四章 如何提升行文质量"></a>第四章 如何提升行文质量</h2><h3 id="第-1-节-如何写出打动人心的金句"><a href="#第-1-节-如何写出打动人心的金句" class="headerlink" title="第 1 节 如何写出打动人心的金句"></a>第 1 节 如何写出打动人心的金句</h3><p>当一句话简单易懂、郎朗上口，同时又能让读者产生共鸣，感觉说出了他们的心里话的时候，就会被广泛传播。</p><h4 id="金句的特点"><a href="#金句的特点" class="headerlink" title="金句的特点"></a>金句的特点</h4><p><strong>1. 短小精悍</strong></p><p><strong>2. 朗朗上口</strong></p><p>结构工整押韵、有节奏感、读者能轻松记住且愿意复制、转发的话。</p><p><strong>3. 引发情绪共鸣</strong></p><p>综上：短小精悍的表达+朗朗上口的语言+引发情绪共鸣</p><h4 id="金句的作用"><a href="#金句的作用" class="headerlink" title="金句的作用"></a>金句的作用</h4><p><strong>1. 让读者记住你的文章</strong></p><p><strong>2. 让读者能够获得情绪共鸣</strong></p><p><strong>3. 促进文章的转发分享</strong></p><h4 id="打造金句的六个技巧"><a href="#打造金句的六个技巧" class="headerlink" title="打造金句的六个技巧"></a>打造金句的六个技巧</h4><p><strong>1. 巧用关联</strong></p><p>关联词有转折、递进、并列、假设等作用。在金句中使用关联词能让语句紧密相连，更加通顺、完整、层层递进，也能让文章的过渡更流畅、逻辑性更强。</p><ol><li>没有······只有······</li><li>不是······而是······</li><li>哪有······不过是······</li><li>与其······不如······</li><li>没有······不······</li><li>只有······才能······</li></ol><p><strong>2. 巧用比喻</strong></p><p>人生就像一杯茶，不会苦一辈子，但总会苦一阵子。<br>婚姻就像穿鞋子，合不合脚只有自己知道。<br>每个人都是一条河，每条河都有自己的方向。<br>生活就像一杯白开水，你每天都在喝，不要羡慕别人喝的饮料有各种颜色，其实未必有你的白开水解渴。</p><p><strong>3. 善用押韵</strong></p><p>人生难熬的苦，都是向上的路。<br>南墙我撞了，故事我忘了。<br>走过一些弯路，也好过原地踏步。<br>只有两心相惜的温暖，才抵得过似水流年的变幻。</p><p><strong>4. 运用对比</strong></p><p>走得出世界的圈，走不出故乡的圆。<br>生活不止眼前的苟且，还有诗与远方的田野。<br>没有从天而降的英雄，只有挺身而出的凡人。<br>人生要做点看似无意义的事，其实那才是有意义的。</p><p><strong>5. 设计排比</strong></p><p>沉得住气，方能遇事不怒；管得住嘴，方能遇事不争；稳得住心，方能遇事不乱。</p><p><strong>6. 善用回环</strong></p><p>回环就是两句话的重点名词不变，通过变换顺序变成两个句子。例如 “当你凝视深渊时，深渊也在凝视你。”</p><ol><li>ABBA 结构</li></ol><p>给岁月以文明，而不是给文明以岁月。<br>没有任何道路可以通向真诚，真诚本身就是道路。<br>要么把敌人带给正义，要么把正义带给敌人。<br>人类必须终结战争，否则战争就会终结人类。</p><ol start="2"><li>ABAC 结构</li></ol><p>不在乎天长地久，只在乎曾经拥有。<br>你可以嘲笑我，但你不能嘲笑我喜欢的东西。<br>哪里有生活，哪里就有希望。</p><ol start="3"><li>ABBC 结构</li></ol><p>放弃时间的人，时间也会放弃他。</p><h4 id="写好金句的三个步骤"><a href="#写好金句的三个步骤" class="headerlink" title="写好金句的三个步骤"></a>写好金句的三个步骤</h4><p><strong>1. 找金句</strong></p><p>句子网站、书籍、电影、歌词或者音乐软件评论区、广告文案等。</p><p>名言通、句子控、微博、抖音、微信公众号等博主定期发布。</p><p><strong>2. 仿金句</strong></p><p>找一些经典的金句，总结出它们的公式，根据公式来仿写自己的金句。</p><p><strong>3. 创金句</strong></p><p>浏览的句子、积累的句子、仿写的句子足够多的时候，语感会越来越好，表达能力也会越来越强。</p><p>找到了写金句的感觉时，就可以开始自己创作金句了。</p><h3 id="第-2-节-如何写出让人忍不住读下去的开头"><a href="#第-2-节-如何写出让人忍不住读下去的开头" class="headerlink" title="第 2 节 如何写出让人忍不住读下去的开头"></a>第 2 节 如何写出让人忍不住读下去的开头</h3><p>开头直接决定了读者愿不愿意看下去，所以开头是重中之重。</p><p>想让读者对你的文章感兴趣，一定要在开头的三句话内吸引住读者。</p><h4 id="开头常见的两大问题"><a href="#开头常见的两大问题" class="headerlink" title="开头常见的两大问题"></a>开头常见的两大问题</h4><p><strong>1. 东拉西扯，与主题无关</strong></p><p><strong>2. 开头没新意，缺少吸引力</strong></p><h4 id="爆款文章常用的四种开头模板"><a href="#爆款文章常用的四种开头模板" class="headerlink" title="爆款文章常用的四种开头模板"></a>爆款文章常用的四种开头模板</h4><p><strong>1. 提问式开头</strong></p><p>人们对问题天然会有好奇心，想知道答案。</p><p><strong>2. 素材引入式开头</strong></p><ol><li>热点引入</li><li>官方统计数据</li><li>小故事大道理</li></ol><p>适合的文章：</p><ul><li>素材大于观点的文章。素材比观点更加出彩。观点还是老旧的观点，但素材是鲜活的素材。</li><li>观点有理解难度的文章。文章观点比较专业、能提供信息增量，对普通人来说需要花费一定时间理解。</li></ul><p><strong>3. 名人名言式开头</strong></p><p>XXX说过：XXXXXX</p><p><strong>4. 感同身受式开头</strong></p><p>结合文章的主题和读者群体，打造读者可能遇到的一种心境或者场景，让读者一下子产生代入感的一种开头。</p><ol><li>刻画典型脸谱：你身边是否也有这样的人？</li><li>打造典型场景：不知道你有没有这样的经历？不知道你有没有遇到过这种情况？</li></ol><ul><li>不能太空泛，要具体一点</li><li>不能太极端，要符合大部分人的现实生活</li></ul><h3 id="第-3-节-如何写出高点赞数、高转发量的结尾"><a href="#第-3-节-如何写出高点赞数、高转发量的结尾" class="headerlink" title="第 3 节 如何写出高点赞数、高转发量的结尾"></a>第 3 节 如何写出高点赞数、高转发量的结尾</h3><p>峰终定律：人们只会记住处于高峰时和结束时的体验，如何在这两个时刻的体验是愉悦的，那么人们对于整个体验的感受就是愉悦的。</p><h4 id="爆款文章三种常见结尾方式"><a href="#爆款文章三种常见结尾方式" class="headerlink" title="爆款文章三种常见结尾方式"></a>爆款文章三种常见结尾方式</h4><p><strong>1. 激发情绪，引发共鸣</strong></p><p>话锋转向读者，让读者产生共情，使用金句可以增加情绪感染力，引发共鸣。</p><p><strong>2. 强化观点，引发认同</strong></p><p>结尾处把文章的核心观点再强化一遍。</p><p>首尾呼应，文章结构完整，能让读者产生很强的认同感。</p><p><strong>3. 制造话题，引发讨论</strong></p><p>提出一个和读者切身相关的问题，引发读者的讨论和思考。</p><h4 id="爆款文章常用的四种结尾"><a href="#爆款文章常用的四种结尾" class="headerlink" title="爆款文章常用的四种结尾"></a>爆款文章常用的四种结尾</h4><p><strong>1. 总结升华式结尾</strong></p><p>新手：总结文章各部分观点，提炼成简洁精辟、句式对称的排比句。</p><p><strong>2. 名人名言式结尾</strong></p><p>引用名人名言，名人的话更有说服力。</p><p>但是一定要非常契合文章的主题、观点。</p><p><strong>3. 祝愿劝慰式结尾</strong></p><p>像朋友一样劝慰读者，对他们的生活和未来寄予美好的祝愿。</p><p><strong>4. 呼吁式结尾</strong></p><p>向读者发出某种呼吁，在前文的基础上进一步启迪读者或者号召读者行动起来。</p><h2 id="第五章-如何优化文章细节"><a href="#第五章-如何优化文章细节" class="headerlink" title="第五章 如何优化文章细节"></a>第五章 如何优化文章细节</h2><h3 id="第-1-节-如何写出打动人心的故事"><a href="#第-1-节-如何写出打动人心的故事" class="headerlink" title="第 1 节 如何写出打动人心的故事"></a>第 1 节 如何写出打动人心的故事</h3><h4 id="写作新手写故事时常见的三大误区"><a href="#写作新手写故事时常见的三大误区" class="headerlink" title="写作新手写故事时常见的三大误区"></a>写作新手写故事时常见的三大误区</h4><p><strong>1. 人物、事件交代不清楚</strong></p><p>基本三要素：人物、背景、情节</p><p><strong>2. 使用 “百度百科式” 语言讲故事</strong></p><p>需要有更多表达情绪、行为的文字。而不是没有情感、中立、客观的语言。</p><p><strong>3. 把握不好故事节奏</strong></p><p>根据观点倒推逻辑，想清楚为什么写这个故事，想通过这个故事告诉读者什么。</p><p>根据文章想要传递的观点、情绪，倒推要重点讲述的内容，并以此把握行文节奏。</p><h4 id="万能故事公式-“ABCDEF”"><a href="#万能故事公式-“ABCDEF”" class="headerlink" title="万能故事公式 “ABCDEF”"></a>万能故事公式 “ABCDEF”</h4><p><strong>1. 动作</strong></p><p>主人公平静的生活被打破，突然想做一件事。</p><p><strong>2. 背景</strong></p><p>介绍故事发生的背景。</p><p><strong>3. 复杂性</strong></p><p>发生的事件中出现问题，产生冲突，人们陷入困境。</p><p><strong>4. 发展</strong></p><p>如何解决这个问题，采取了什么行动。</p><p><strong>5. 顿悟</strong></p><p>突然醒悟，明白了此前不知道的道理。</p><p><strong>6. 结局</strong></p><p>人物以后的生活如何，变好了还是变坏了。</p><h4 id="让故事更精彩的五大技巧"><a href="#让故事更精彩的五大技巧" class="headerlink" title="让故事更精彩的五大技巧"></a>让故事更精彩的五大技巧</h4><p><strong>1. 明确一个主题</strong></p><p>主题就是你想突出什么，想通过这个故事表达什么观点。</p><p><strong>2. 区分主次关系</strong></p><p>抓住重点信息，去掉次要信息，直奔主题，留下最有价值的部分。</p><p><strong>3. 制造矛盾冲突</strong></p><ol><li>人和人的冲突</li><li>人和自然的冲突</li><li>人和社会的冲突</li><li>人和自我的冲突</li></ol><p><strong>4. 刻画人物个性</strong></p><p>主人公是有自己的个性的，写的时候一定要写出他的个性。</p><p>刻画人物个性的两个方法：</p><ol><li>通过对话：写人物和别人的对话</li><li>通过动作：处理事情的方式等</li></ol><p><strong>5. 注重细节</strong></p><h3 id="第-2-节-如何寻找合适的素材"><a href="#第-2-节-如何寻找合适的素材" class="headerlink" title="第 2 节 如何寻找合适的素材"></a>第 2 节 如何寻找合适的素材</h3><h4 id="素材的三个来源"><a href="#素材的三个来源" class="headerlink" title="素材的三个来源"></a>素材的三个来源</h4><p><strong>1. 个人经历&#x2F;身边人的故事</strong></p><p>贴近读者生活，比较有真实感，所以读者的共鸣感也会比较强。</p><p>需要有一点的情节起伏，必要的时候可以添加一些自编的合理情节，故事不能太常见，能给人带来思考。</p><p><strong>2. 图书、影视作品和碎片化信息等输入</strong></p><p><strong>3. 刻意收集</strong></p><h4 id="素材类型及收集渠道"><a href="#素材类型及收集渠道" class="headerlink" title="素材类型及收集渠道"></a>素材类型及收集渠道</h4><p><strong>1. 金句</strong></p><p>句子网站、知乎、微信公众号、微博等</p><p><strong>2. 人物</strong></p><p>纪录片、微信公众号、书籍、人物网站</p><p><strong>3. 短视频</strong></p><p>抖音、快手、视频号</p><p><strong>4. 影视作品</strong></p><p>纪录片、电影、电视剧、热门综艺等</p><p><strong>5. 新闻资讯</strong></p><p>人民日报、今日头条、网易新闻、腾讯新闻等</p><p><strong>6. 自制故事</strong></p><p>微博、知乎、公众号、天涯、豆瓣</p><p>素材搜索建议：</p><ol><li>善用关键词搜索</li></ol><ul><li>搜索关键词</li><li>联想法，关键词联想到的人名或事件作为关键字再次搜索</li><li>近义词法，搜索和关键词意思相近的词语</li></ul><ol start="2"><li>及时关注评论区</li></ol><h4 id="如何筛选合适素材"><a href="#如何筛选合适素材" class="headerlink" title="如何筛选合适素材"></a>如何筛选合适素材</h4><p><strong>1. 选择和主题强相关的素材</strong></p><p><strong>2. 选择鲜活的素材</strong></p><p>罕见的、新鲜的、生动、有可看性</p><p><strong>3. 选择提供增量的素材</strong></p><p>信息增量、认知增量</p><p><strong>4. 同一篇文章中注意素材组合的多样化</strong></p><ol><li>正反搭配。正面素材+反面素材</li><li>种类丰富。漫画、视频、图片、文本</li><li>详略搭配</li></ol><h4 id="新媒体写作中较实用的找素材工具"><a href="#新媒体写作中较实用的找素材工具" class="headerlink" title="新媒体写作中较实用的找素材工具"></a>新媒体写作中较实用的找素材工具</h4><p><strong>1. 今日热榜</strong></p><p><strong>2. 新榜</strong></p><p><strong>3. 印象笔记</strong></p><p><strong>4. 石墨文档</strong></p><p><strong>5. 秀米编辑器</strong></p><p><strong>6. 创客贴</strong></p><p><strong>7. 幕布</strong></p><p><strong>8. GitMind 思维导图</strong></p><p><strong>9. 句子控、名言通、句读</strong></p><p><strong>10. 壹伴</strong></p><p><strong>11. 讯飞听见</strong></p><p><strong>12. 微信读书</strong></p><p><strong>13. 微信</strong></p><h3 id="第-3-节-如何让你的文章越改越好"><a href="#第-3-节-如何让你的文章越改越好" class="headerlink" title="第 3 节 如何让你的文章越改越好"></a>第 3 节 如何让你的文章越改越好</h3><h4 id="为什么会被拒稿"><a href="#为什么会被拒稿" class="headerlink" title="为什么会被拒稿"></a>为什么会被拒稿</h4><p><strong>1. 调性不符</strong></p><p><strong>2. 文章太平</strong></p><ol><li>整体比较平</li><li>文字比较平</li></ol><p><strong>3. 文章老旧</strong></p><p><strong>4. 行文业余</strong></p><ol><li>主题词反复出现</li><li>内容套路化</li></ol><h4 id="怎么做才能提升自己的投稿成功率"><a href="#怎么做才能提升自己的投稿成功率" class="headerlink" title="怎么做才能提升自己的投稿成功率"></a>怎么做才能提升自己的投稿成功率</h4><p><strong>1. 一改，改态度</strong></p><p>端正态度，学会接纳编辑和他人提出的修改建议，虚心向朋友或编辑求助。</p><p><strong>2. 二改，改习惯</strong></p><p>写完后习惯性的检查一遍，通读整篇文章。</p><p><strong>3. 三改，改文章</strong></p><center>策略层面改稿</center><table><thead><tr><th><strong>检查项</strong></th><th><strong>检查要点</strong></th></tr></thead><tbody><tr><td>选题（为什么要写这篇文章）</td><td>选题调性：选题是否符合投稿账号调性，和投稿账号之前的文章相比有何不同<br/>标题亮点：选题有没有支点，有没有亮点<br/>选题新旧：从时间维度上看，这个选题旧不旧<br/>选题价值：选题价值如何？增量和存量如何？会不会涨粉？<br/>选题类型：是否属于爆点式选题、关系张力式选题、框架式选题、载体式选题中的某一类型<br/>标题表述：是否含有悬念、情节、场景、动词、数字、缝隙、逻辑等<br/>内容调性：情感还是硬核<br/>文章发布位置：如果要发布，这个文章在公众号推送中处于哪个位置</td></tr></tbody></table><center>技术层面改稿</center><table><thead><tr><th><strong>检查项</strong></th><th><strong>检查要点</strong></th></tr></thead><tbody><tr><td>整体</td><td>通读全文，用语感判断全文风格是否统一，若第一眼就觉得看不下去，文章必然存在问题<br/>文章主题是否明确，主线逻辑是否通顺<br/>框架内容有没有扣题，是不是过于冗长<br/>每一段之间是否存在逻辑联系<br/>文章有没有长处？有没有让你眼前一亮的东西？比如新素材、新角度或语言特别凝练、优美</td></tr><tr><td>首尾</td><td>开头能否吸引人阅读下去<br/>结尾是否存在总结升华，有没有调动读者情绪</td></tr><tr><td>素材呈现</td><td>例子和观点是否契合<br/>素材呈现方式是否单一，比如全是故事<br/>素材旧不旧，是否被广泛使用<br/>故事是否有张力<br/>引用的案例、书籍、电影、电视剧、金句是否真实<br/>要保证文章中的素材、金句、词语都是为核心观点服务的<br/>名人名言素材是否有新意，是否精辟</td></tr><tr><td>语言</td><td>有没有语法错误、错别字和语病<br/>文章的语言风格，是否符合新媒体语境<br/>每一部分的故事有没有讲清楚<br/>语言表达是不是在玩文字游戏，接不接地气<br/>文字是不是足够简洁<br/>金句是否足够精辟</td></tr><tr><td>硬伤</td><td>整体有无抄袭、洗稿情况<br/>确认排版，检查字号、行间距，注意标点</td></tr></tbody></table>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;第一章-人人都能复制的写作能力&quot;&gt;&lt;a href=&quot;#第一章-人人都能复制的写作能力&quot; class=&quot;headerlink&quot; title=&quot;第一章 人人都能复制的写作能力&quot;&gt;&lt;/a&gt;第一章 人人都能复制的写作能力&lt;/h2&gt;&lt;h3 id=&quot;第-1-节-入门新媒体写作</summary>
      
    
    
    
    <category term="写作" scheme="http://www.5had0w.com/categories/writing/"/>
    
    
    <category term="笔记" scheme="http://www.5had0w.com/tags/notes/"/>
    
    <category term="写作" scheme="http://www.5had0w.com/tags/writing/"/>
    
    <category term="自媒体" scheme="http://www.5had0w.com/tags/we-media/"/>
    
  </entry>
  
  <entry>
    <title>旧手机拆机记录</title>
    <link href="http://www.5had0w.com/posts/67a0bc3e.html"/>
    <id>http://www.5had0w.com/posts/67a0bc3e.html</id>
    <published>2024-04-06T10:55:09.000Z</published>
    <updated>2024-04-06T14:34:50.977Z</updated>
    
    <content type="html"><![CDATA[<p>脑子一热把之前那个闲置的旧手机给拆了，纯粹是无聊拆着玩。</p><p>因为以前没拆过手机，所以一直想拆一部手机，这旧手机闲置很久了，早就有拆了它的打算，只是之前一直舍不得，这次终于是忍不住了。</p><p>无基础直接拆，最后拆完还能开机，难道我真是天才？</p><p>拿着螺丝刀直接就上手拆了，整体拆完大概是下面这个样子。（少了主板，拍这张照片的时候，我正拿着主板做开机测试。）</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/phone-dismantling.png"/></div></div><p>首先拆的是屏幕，屏幕之前就摔碎了，而且脱胶了，所以我拆的时候没有怜香惜玉，直接暴力拆，导致屏幕直接就被我干废了。</p><p>接下来就是拆后盖，把底部两颗螺丝拧掉之后，就可以拆了。</p><p>但是一直拆不开，在 B 站找了同款手机的拆机视频：<a href="https://www.bilibili.com/video/BV1pA411e7rg/">《努比亚z11minis换外屏和电池，电池鼓包了要早点换，很容易出事》</a></p><p>看到这个视频我才知道，原来我之前屏幕碎的是外屏，内屏其实还有用的，因为屏幕之前只是碎了，实际是还能正常使用的，这次却直接被我干的没法点亮了，这波血亏啊。</p><p><strong>而且拆屏幕之前应该是先拆电池。</strong></p><p>接着参考视频继续拆后盖，用螺丝刀一点一点撬，可能是太久了导致老化了，撬断了不少塑料，不过总算是把后盖给打开了。</p><p>打开之后，有一个小的金属保护盖要拆了，然后拆电池，照着视频，找张卡片，一点一点把电池撬起来，然后把整个电池拿下来。</p><p>电池和主板的连接是插拔模式的，可以很轻松取下。</p><p>或者说，电池保护板和主板是插拔模式的。因为电池的正负极是连到了电池保护板上，然后电池保护板连到了主板上。</p><p>电池取下后，在原本的位置可以看到两条排线，分别是屏幕和尾插的。</p><p>电池我不打算要了，但是电池保护板我是要的，因为之前有看过手机改直供电相关的视频，其中就需要电池保护板，后续测试开机也是需要用它来供电。</p><p>小心的把电池保护板上的胶布撕掉，找到电池正负极与保护板连接部分，然后拿剪刀，将连接部分的金属片直接剪断，不过要注意不能使电池正负极碰到一起，否则会起火。</p><p>接着就是随意拆了，看到能拧的螺丝都拧，看到能拔的都拔了。</p><p>拆下前后摄像头。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/camera.png"/></div></div><p>后盖上的指纹识别模块，这个固定的有点紧，不过用螺丝刀背用力顶就顶下来了。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/fingerprint.png"/></div></div><p>尾插，也就是充电口，上面还有个振动器。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/charging-connector.png"/></div></div><p>然后是主板。</p><p>这是正面，大部分插槽都在这边。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/mainboard-3.png"/></div></div><p>下图是背面，我将其上下翻转了一下，可以看到芯片上的 QUALCOMM MSM8953，即高通骁龙 625。</p><p>顶部还有一个插槽，尾插的排线就是插到这里。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/mainboard-2.png"/></div></div><p>其实这里都有金属盖的，但是都被我拿掉了。</p><p>侧边按键也拆了下来。</p><p>然后底部，在尾插附近还有一小块整体，嵌着一块方形的金属，好像是磁铁，不知道这是干嘛的，难道是扬声器？</p><p>到这好像就拆完了，主板上其他部分都是焊接的。</p><p>这时我突发奇想，只有主板，能开机吗？</p><p>于是我就打算尝试一下，给主板接上电池保护板，再绑了两根线到电池保护板上，开机键也接回主板上，如下图这个样子。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/mainboard-4.png"/></div></div><p>然后使用我之前买的 CH340G 模块，给他供个 5V 的电。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/mainboard-5.png"/></div></div><p>接着我打开了路由器后台管理，因为这台手机开机是会自动连 WIFI 的，而且我之前为它设置了静态 IP，如果开机连上 WIFI 了，那么我这边立马就能看到。</p><p>按住开机键几秒，等待奇迹。</p><p>居然真的开机了！</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/router-manager.png"/></div></div><p>抱着试一试的心态，使用 Scrcpy 尝试通过 ADB 远程连接手机，没想到居然也连上了，这手机居然是开机自动开启 ADB 调试，神奇，我都忘了是不是自己之前设置过了。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/scrcpy.png"/></div></div><p>但是就是很卡，非常非常卡，可惜我没有屏幕了，所以不知道是手机本身卡，还是远控导致卡。</p><p>我这手机之前刷了 Kali Nethunter 系统，可以像 Linux 一样远程登录。</p><p>尝试了一下 SSH 连接，也能连上。</p><div class="tag-plugin image"><div class="image-bg"><img src="/assets/old-phone-dismantling-record/neofetch.png"/></div></div><p>这里命令行就很流畅了，一点都不卡。</p><p>最后我没把各个零件装回去，一来我感觉装不回去了，而且屏幕都干废了，装回去也意义不大，二来我觉得这样也挺好，还挺酷的。</p><p>唯一美中不足的是，没法做到一通电就开机，每次还是得按开机键才能开机。</p><p>虽然按照网上教程：<a href="https://www.bilibili.com/video/BV1VN411t7TD/">《【折腾教程】旧手机改直供电，插电自动开机》</a></p><p>提取 boot 分区镜像修改后再刷入，但还是没用。</p><p>教程里是检测到充电就开机，我看 UP 主的手机也是一直显示充电中，而我手机一直显示的是电池供电，不是在充电中。</p><p>不知道是不是我把尾插拆了，不是走尾插供电的原因。</p><p>这点我也没找到答案，毕竟没人像我一样把手机拆成这样来用哈哈。</p><p>而且它很容易就休眠，一旦休眠 WIFI 就会断开，这时又得按一下开机键来唤醒。</p><p>不然拿它来当服务器还挺合适的，也没有电池，不用担心长时间充电的风险。</p><p>这次拆手机，最大的收获就是，对手机内部的构造，稍微有了一些了解。</p><p>知道了很多模块都是可以直接拆的，拆了不会导致手机无法开机。</p><p>也知道了如何更换电池以及屏幕了，以及手机如何改成无电池直供电。</p><p>并且我一开始是抱着拆废的打算去拆的，没想到最后还能用，也算意外之喜了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;脑子一热把之前那个闲置的旧手机给拆了，纯粹是无聊拆着玩。&lt;/p&gt;
&lt;p&gt;因为以前没拆过手机，所以一直想拆一部手机，这旧手机闲置很久了，早就有拆了它的打算，只是之前一直舍不得，这次终于是忍不住了。&lt;/p&gt;
&lt;p&gt;无基础直接拆，最后拆完还能开机，难道我真是天才？&lt;/p&gt;
&lt;p&gt;</summary>
      
    
    
    
    <category term="手机" scheme="http://www.5had0w.com/categories/phone/"/>
    
    
    <category term="拆机" scheme="http://www.5had0w.com/tags/dismantling/"/>
    
    <category term="安卓" scheme="http://www.5had0w.com/tags/android/"/>
    
    <category term="ADB" scheme="http://www.5had0w.com/tags/ADB/"/>
    
  </entry>
  
</feed>
