1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
<html><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="#000000">
<title>Chrisoft::Blog</title>
<script type="text/javascript" src="/panel.js"></script>
<script type="text/javascript" src="/blog/footnoter.js"></script>
<script type="text/javascript" src="/blog/aes-js.js"></script>
<script type="text/javascript" src="/blog/scrypt.js"></script>
<script type="text/javascript" src="/blog/sha256.js"></script>
<script type="text/javascript" src="/blog/decryptor.js"></script>
<link rel="stylesheet" type="text/css" href="/common.css">
<link rel="stylesheet" type="text/css" href="/panel.css">
<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
<script>
function ol()
{
window.onresize=function()
{
if(window.innerWidth<768)
setupevents();
else unsetevents();
}
window.onresize();
_decryptonload();
}
function loadTheme(){
var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
var ent="";
var d=new Date();
if(thm[0]=='z')
{
var m=d.getMonth()+1;
if(m>=3&&m<6)thm='0'+thm[1];
else if(m>=6&&m<9)thm='1'+thm[1];
else if(m>=9&&m<12)thm='2'+thm[1];
else thm='3'+thm[1];
}
if(thm[1]=='z')
{if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
ent=`theme${thm}`;
var R=new RegExp('theme[0-4][ab]');
for(var i=0;i<document.styleSheets.length;++i)
{
if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
document.styleSheets[i].disabled=true;
else document.styleSheets[i].disabled=false;
}
var thmcolor="";
switch(thm[0])
{
case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
}
document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
}
loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
<div id="panel" class="TText">
<ul id="panellist">
<li><a href="/"><h1>Chrisoft</h1></a></li>
<li><a href="/blog"><h2>Blog</h2></a></li>
<li><a href="#"><h3 id="title">Raspberry Pi2 初体验</h3></a></li>
<li><span>Tags</span>
<ul id="tagslist">
<li><a href="/blog/list/hands-on/">hands-on</a></li><li><a href="/blog/list/device-review/">device-review</a></li></ul>
</li>
<li id="tocouter" style="display: none;">
<span>Table of Contents</span>
<ul id="tocroot">
</ul>
</li>
<li style="margin-left:-0.5em"><a id="prevp" href="2015-11-01.html">Prev post</a></li>
<li style="margin-left:-0.5em"><a id="nextp" href="2015-12-20.html">Next post</a></li>
</ul>
</div>
<div id="content">
<h2 id="titleh" class="TText" style="font-wight:normal;">Raspberry Pi2 初体验</h2>
<div id="datetags" class="TText" style="margin-bottom:1em;">2015-11-22<br>#hands-on #device-review</div>
<hr><div id="article" class="TText">
<article>
前几天(11月8号)<s>陪伴了</s>我<s>3年</s>的Galaxy S3从床上摔下来坏掉了。外屏连裂缝都没有,内屏完全废掉了,
只有一部分屏幕能显示出颜色不对的画面。网上一查S3没有单独卖的屏幕,而换掉整个前面板需要花掉450(真·450)。<a id="n1" href="#note1" class="note">[1]</a>于是我开始考虑买一台新的设备……
浏览了一些手机的价格,发现都跟抢钱一样贵。后来突然想到了一直想要一块树莓派,于是就跟我妈「谈了个条件」:买了这个之后两年内不买手机。<a id="n2" href="#note2" class="note">[2]</a>
然后就把树莓派买下来了……(RPi+屏幕+usb wifi=~600RMB)<br>
树莓派可以说是我等得最焦急的一个快递。在快递来之前我已经把Raspbian镜像下好了。然而我在拿到这块大英帝国设计,
天朝制造的板子之后还是有点不知所措<a id="n3" href="#note3" class="note">[3]</a>。上来先往SD卡写系统。然而dd完毕之后卡住不退出了。
我看似乎4.3G的镜像已经完整地写入进去了。于是试着拿它启动树莓派,结果启动的时候一开始应该看见一个彩色的方块,那个方块却被奇特地拉长了。
方块消失之后屏幕上就变成了无法理解的东西。我以为是dd爆炸的原因,于是就重新写了好几遍SD卡。然而每次都卡在最后。由于屏幕上显示的东西实在无法看清,
我就试着拿ssh连接它,结果成功了。我才知道这个跟SD卡没关系。然而屏幕是在电脑上试过,没问题的。
后来才知道这其实是config.txt里面显示屏分辨率的问题……(1024x600的非标准分辨率需要用特殊的方式设定)于是在config.txt里设置了正确的分辨率,
终于见到了正常的终端和图形界面。<br>
Class 4的SD卡实在是太慢了。于是我把系统移到了U盘,启动速度有了质的提升。现在我的文件系统分配是这样的:<br>
<pre> mmcblk0p1 /boot 60M
mmcblk0p2 /home ~16G
sda2 / ~8G
</pre>
为了实现体验Gnome3的触屏体验的愿望,我把系统滚到了testing(stretch),然后装了Gnome 3.18。然而不幸的是,即使是2代的Raspberry Pi,
带动Gnome3这个超重量级桌面环境还是相当有压力。然而压力却全在CPU上而不在RAM上——1G RAM仅使用了200MB,
gnome-shell的CPU占用在登陆几分钟之后就一直在20%以上。不过,Gnome3的触屏体验还是不错的(在不卡的前提下)。
为了获得一个实用性较强的桌面环境,我还是回到了LXDE……<br>
各项功能基本都调试完毕之后,我开始了解关于板上GPIO的知识。GPIO这东西还是很神奇的……很久之前我有一种模糊的用什么设备实现一个自动弹钢琴的机器的想法,
现在发现GPIO真的可以直接实现……<br>
昨天晚上用装快递的盒子给它做了个简陋的壳子。感觉还是可以的……(图见下)<br>
现在差不多就研究到这里……开始学习python并研究RPi的其他用途……!<br>
<table style="max-width:90%;margin:auto;">
<tbody><tr>
<td>
<a href="//filestorage.chrisoft.org/blog/img/rpi_1.jpg"><img src="//filestorage.chrisoft.org/blog/img/rpi_1.jpg" width="50%" decoding="async"></a><br>
Gnome3.18 on Raspberry Pi 2<br>
</td>
<td>
<a href="//filestorage.chrisoft.org/blog/img/rpi_2.jpg"><img src="//filestorage.chrisoft.org/blog/img/rpi_2.jpg" width="50%" decoding="async"></a><br>
Browsing the web with Iceweasel<br>
</td>
</tr>
<tr>
<td>
<a href="//filestorage.chrisoft.org/blog/img/rpi_3.jpg"><img src="//filestorage.chrisoft.org/blog/img/rpi_3.jpg" width="50%" decoding="async"></a><br>
The simple box<br>
</td>
<td>
<a href="//filestorage.chrisoft.org/blog/img/rpi_4.png"><img src="//filestorage.chrisoft.org/blog/img/rpi_4.png" width="50%" decoding="async"></a><br>
LXDE Desktop<br>
</td>
</tr>
<tr>
<td>
<a href="//filestorage.chrisoft.org/blog/img/rpi_5.png"><img src="//filestorage.chrisoft.org/blog/img/rpi_5.png" width="50%" decoding="async"></a><br>
screenfetch<br>
</td>
</tr>
</tbody></table>
</article>
</div><br><hr>
<div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 2016-02-21补记:现在那台S3已经满血复活了……
大概是一亲戚有台闲置的手机问我要不要,我一看是台S3……然后就把外屏换了。<s>(于是就这么白赚了一台树莓派)</s><br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: <s>其实现在有点后悔这个条件……</s><br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: 以至于手上被板子划了个口子……<br></span></div>
<div id="insanch" style="height:3em;"></div>
<div id="footer" style="">
<div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
<div style="text-align:center;" class="TText">
Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
<br>
Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
</div>
</div>
<div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
</div>
</div>
<div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
<div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
<div id="keyhint" style="margin-bottom:8px;"></div>
<div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
<div style="height:2.25em;">
<button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
<button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
</div>
</div>
</div></body></html>
|