double类型的地址
作者:拉德布鲁赫信徒
1 引言
最近一直是心心念念,有没有更好的linux小设备,同时满足低功耗、拥有usb3.0接口与千兆网口各种需求。翻阅了站内的文章,arm架构的设备,主要有玩客云、N1、章鱼星球以及最近大火的CM311盒子。在海鲜市场混迹很久后,终于是发现了有一批之前的rk3399的板子,目前价格较为合适的有一款荣品的rk3399板子。主要包括长形的板子和一个方形的板子。
在各种纠结之下,终于是买了上图中A型号的板子,并有了以下的评测内容。
2 定位
结合目前比较热门的几款设备,主要从4个维度进行讨论,即:CPU性能、是否具有USB3.0接口、是否具有千兆网口、价格。
2.1 玩客云
玩客云目前价格应该是几个设备当中最便宜的了,三四十块钱在海鲜市场上一大把。作为入门级的armbian设备,其具有其不可替代的很多优点。当然了,其最大的优点,还是便宜,比它便宜的基本没有,比它贵的在价格上基本上都是翻番了。
除了价格之外,玩客云最大的优点就是拥有一个千兆网口,有了千兆网口就可以实现很多的事情,比如说可以当做一个FRP内网穿透的服务器,在当下的环境下足以跑满绝大多数的带宽了。但是,受限于其usb2.0接口的限制,在内网环境下想当做一个轻型nas使用的话,还是不堪其用。因此,其使用场景还是因为其usb2.0接口而受限,只能跑一下轻量的应用、通过docker建立一下网页应用,其最有意义的用法应该就是用来搭建homeassitance了。
另外一个严重的缺点在于,其所采用的S805芯片,是一颗armv7架构的32位芯片,有很多docker应用无法在这种架构上面运行,这也算的上是其一个知名的缺陷了,但是考虑到其价格,倒也无法去指责太多。
2.2 N1
N1在刚刚成为矿渣的时候,价格一度极具性价比,70元左右的价格,同时拥有千兆网口和S905芯片,还有着诸多固件可以刷,使用场景除了作为一个传统安卓盒子使用外,还可以刷成Openwrt作为旁路由使用,也可以刷成游戏机的系统,以及可以使用诸多docker应用的armbian系统,风头一时无两。但是随着时间的过去,N1已经是一个好几年前的产品了,emmc芯片的使用寿命作为我来说多少有点担忧,虽然有扩容方案的出现,但是高昂的价格,完全可以转向一个x86的诸如N2800、J1900这种设备了,而且后者灵活性更大,可以随意更换内存、硬盘,还有着这类盒子无可比拟的优点——可以刷很多nas系统,如黑群晖、unraid、truenas等。
但是综合而言,使得N1跌下神坛的关键原因,还是在于其不断上涨的价格,现在的价格通常是在120元左右。此外,其usb2.0接口也限制了其使用场景。
2.3 章鱼星球
章鱼星球是2345公司在某个特殊时期生产的矿渣,但是相对于玩客云、N1等,其市场保有量较小,想找一台差不多的机器还是相对比较困难的。其最大的优点,是拥有一颗S922芯片,比起S905强上太多了。而且其还具有一个千兆网口,使用场景可以参照前面的玩客云与N1。但是,其致命缺点,还是在于其那个USB2.0的接口。
其现在的市场价格,普遍都是在120元左右,但是这款机器由于玩的人比较少,一些固件来说相对也是比较难找的。
2.4 CM311
这个是一个系列的统称,通常都是运营商赠送的电视盒子,市场保有量大,价格也较为稳定,通常50多元都可以收到一台,运气好的话还可以收到已经刷完armbian系统的机器。其采用的是S905芯片(这个芯片有很多型号,但是性能都是大差不差),拥有百兆网口、usb2.0的接口。可玩性在站内已经有很多文章进行了详细的评测,在此就不加赘述了。
2.5 RK3399系列
这个系列的板子,通常都是一些广告机拆机下来的板子,拥有完全的接口,千兆网口和usb3.0一应俱全,这也是笔者选择这款的主要理由。对比同款芯片的开发板,其120元左右的价格对比动辄四五百的开发板,也是极具性价比的价格。此外,这款机器的性能对比价格已经飞上天际的树莓派,也是不逞多让。
但是相对于其诸多优点,其致命缺点,还是在于其资料的稀缺,刷机就成了难以逾越的一个坎,这也是开本文的一个目的所在。但是需要申明的一点是,本文的写作目的仅仅是分享而已,并无利益相关。
2.6 综合对比
1、cpu性能(由于部分机器的处理器产生了重合,这次就以处理器来进行横向对比,大家请根据处理器自行对号入座)
由于处理所跨年份较久,因此采用了benchmark4的数据,依照单核性能与多核性能整理如图所示:
由图可知,玩客云与诸多S905芯片的设备其实并拉不开太大的差距,但是32位和64位处理器的差距成为了日常使用中的一种障碍。而章鱼星球S912芯片虽然性能够强,但是在单核上反而弱于S905芯片,完全是依靠多核心才在性能上碾压了S905芯片。而作为对比的RK3399,在性能上无愧于标题中的double称号。
2、是否具有usb3.0
玩客云 | N1 | 章鱼星球 | CM311 | KING3399 |
---|---|---|---|---|
3、是否具有千兆网口
玩客云 | N1 | 章鱼星球 | CM311 | KING3399 |
---|---|---|---|---|
4、固件丰富程度
N1>CM311>玩客云>king3399
2.7 小结
综合而言,RK3399的方案是较为合理的一种方案,尤其是针对使用安卓以及linux的使用场景。此外,站内还有朋友已经写过了同款安装树莓盘当做nas使用的一种场景,有兴趣的可以去看看。
3 刷机
3.1 准备工具
硬件方面需要的是一根网线,用于刷机后连接该设备进行后续一些必要软件的安装;一个镊子,用于短接用;一根typec的数据线以及一个必备的dc电源用于给设备供电。
软件方面所需要的主要就是驱动、固件以及刷机工具,在这已经打包放在这里了。
镜像文件
驱动
刷机工具
3.2 短接
安装完驱动程序后,将typec的连接板子和电脑,用镊子两个脚分别放在如图的触点上进行短接,确认短接完毕后插电,直到刷机软件如图所示的位置出现发现maskrom设备位置即可放开镊子。如果没有弹出maskrom的提示,那就拔点之后按照步骤多试几次。
第二步,按照上图软件界面,点击固件,选择已经对应的固件,然后直接点击升级,直到如图所示重启设备成功的字样出现。
到这里为止,固件就已经成功刷进去了。此时,断开typec的线,用hdmi线将板子连接到显示器上,会显示删除安卓的图片,然后弹出瑞芯微的logo,再然后就是熟悉的命令行界面了。
此时,接上网线,继续我们下面的步骤。
3.3 修改密码
在提示登录的界面,输入root,然后回车,初始密码是rpdzkj,即当前界面显示的文本。
使用root账号登录之后,当然就是先照例更新一下软件,输入如下命令,中间出现了选择y或者n以及其他命令,跟着提示输入就好:
sudo apt update
sudo apt upgrade
再然后修改密码,输入如下命令:
passwd
这里不会显示你所输入的内容,输入两次然后回车即可。
3.4 开启ssh
1、安装openssh
sudo apt-get install openssh-server
2、安装nano文本编辑器(因为vim实在是太难用)
sudo apt-get install nano
3、修改配置文件以允许root账户登录
cd /etc/ssh
nano sshd_config
找到如下内容:
# PermitRootLogin without passwd
将其修改为(去掉前面的#):
PermitRootLogin yes
保存配置(按照下面的提示来):
先ctrl+o再ctrl+x
重启openssh:
sudo systemctl restart sshd
3.5 安装docker
apt install docker.io
等待进度条跑完,就完全ok了
3.6 小结
接下来的就是很简单,把它放到路由器边上插上网线接上电,在路由器后台找到它的ip地址,通过ssh连接即可安装自己喜欢的docker应用了。
4 总结
综上所述,由于关于该类型的刷机教程较少,因此自己动手刷了一遍留篇文章以做记录。诚然,与之前刷树莓盘那位老哥入手的70块钱相比,现在的120元确实涨价了不少。但是相对于其丰富的接口以及强大的性能,还是无愧于性价比二字的,毕竟double性能double价格嘛对不对,而且现在荣品系的rk3399一方面量比较大,另一方面资料相对还比较丰富,可以刷linux,可以刷安卓,还可以刷树莓盘当做nas使用,可玩性还是值得期待的,笔者就在此抛砖引玉,希望诸位值友能够开发出更多更有趣的玩法把。最后附上一张与玩客云的体积对比图。
葛厚翠2157指针变量不能指向double型变量对吗 -
敖卷爸18491641177 ______ 并不是不能指向字符型变量.而是字符型变量得指针,输出数据时,会数据到0x00(NULL)时才会终止.
葛厚翠2157c++ 问题 解释 -
敖卷爸18491641177 ______ A)试图将一个地址赋值给一个double变量,错误.B)p本是一个指向int型变量的指针,而右边的k却是一个double型变量.C)正确.D)不能将字符创常量赋值给一个字符型指针.正确的做法之一是: char str[]="Thank you!"; char *ppp=str;
葛厚翠2157c语言中SIZEOF啥意义 -
敖卷爸18491641177 ______ 一、sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等.它并不是函数.sizeof操作符以字节形式给出了其操作数的存储大小.操作数可以是一个表达式或括在括号内的类型名.操作数的存储大小由操作数的类型决...
葛厚翠2157c语言中SIZEOF啥意义+作用 -
敖卷爸18491641177 ______ sizeof 用来求一个变量或者一种类型所占用的字节数.比如sizeof(int)一般是4,sizeof(char)一般是1.如果定义了一个整型数,int a,sizeof(a)就是sizeof(int),也就是4. 不过,sizeof的语义远不止这些,更详细的用法可以参阅C++文档
葛厚翠2157double * 是指向double的指针,这句话对吗? -
敖卷爸18491641177 ______ 指针其实存放的是地址,指向double的指针的值,就是这个double型数据的地址.而指针的类型说明的是它所指向的数据结构的类型.
葛厚翠2157C++指针一个小问题(*a=b;) -
敖卷爸18491641177 ______ 因为*a在你申明的时候并没有给指针a初始化,如若a为局部变量,那么此时它里面存的值是一个垃圾值,也就是它指向了内存中的某个地址,而这个地址(操作系统的地址)有可能是不允许你去访问的,所以当你去修改这个地址中的值时,系统会出错.
葛厚翠2157c语言中sizeof(unsigned) -
敖卷爸18491641177 ______ 嗯,首先要清楚unsigned所占的长度 这个是无字符整型,占2个长度 又因mask=1 那么2*1=2 所以sizeof(unsigned) =2
葛厚翠2157double *x=new double[6] 什么意思? -
敖卷爸18491641177 ______ new指令分配6个双精度存储单元并返其回首地址,double *p=new double[6]定义了一个双精度类型指针并把分配后的初始地址赋给p.呵呵这是个人的认知,希望对你有用.
葛厚翠2157若有定义语句:double a, *p=&a; 以下叙述错误的是 -
敖卷爸18491641177 ______ 若有定义语句:double a, *p= 以下叙述错误的是A ...*说明是double类型的指针,存放相应的地址.
葛厚翠2157指针的类型名代表是地址空间值的类型还是地址值得类型? -
敖卷爸18491641177 ______ 准确点说,指针的类型名代表的是被指向地址所存储变量值的类型,大约就等于你说的第1种.举个例子:int a = 0; // 定义变量a,分配内存,假定变量a地址为0x00000010int* p = // 定义指针p,类型为int*,意思是指向int类型值的指针,实际代...