7月4日更新:添加了有关问题的解释与探讨(文末,下一篇文章)

7月5日更新:添加了效果图(文末)

7月8日更新:添加了视频  b站:BV11w411R77n

空间不足?给Jetson Nano更换emmc硬盘(扩容)_哔哩哔哩_bilibili


【声明】我还只是个Linux小白,写的东西并不一定对,仅提供一种参考思路,请各路大神莫喷,有啥想法可以相互交流。

【邮箱】188283942@qq.com

1  前言

1.1 遇到的问题

最近TX2缺货,于是试着用nano去跑一些轻量化的工程。但是nano的emmc只有16G,把ROS装上之后基本上就没法装CUDA了(之前试过,装到一半没空间了,导致开不了机,只能进tty去删东西)。

1.2 解决思路

于是考虑给nano扩容,有三种思路:

1. 插SD卡

可以把系统刷到SD卡上,这样换系统、换环境啥的也方便,但是速度会慢点。我测试过,拷同一个rosbag,拷到板载emmc上有90m/s,拷到SD卡上只有30m/s左右(SD卡是闪迪Extreme PRO 64G UHS-3 V30 A2,声称有170读90写的速度,还是不错的,应该不是瓶颈)。

上网搜了下,可能是SD卡那块的接口就没有那么高的带宽?

2. 插nvme硬盘

官方的套件似乎是可以的,也有相关的教程。

我用的不是官方的套件,而是realtimes的RTSO-6001b载板+nano核心模块(因为要上无人机的,所以就不用官方那个套件了),板载有minipcie接口,卖家说这个载板不支持minipcie转m2再接nvme硬盘,所以放弃。

3. 改eMMC闪存

我感觉,只要硬件上保持兼容(接口、协议、封装等),应该就能用,因为emmc不像SSD、U盘上的nand flash颗粒,他是nand flash + 主控,所以不用考虑主控和固件的问题,接口对了拿过来用就OK。

我这个nano核心板上的emmc是闪迪 SDINBDG4-16G,BGA153封装,查了下手册,这个是iNAND 7250系列emmc5.1闪存,MLC颗粒,有8-64GB的型号。那么最简单的方案,直接换成SDINBDG4-64G就OK了。

我选用的就是这种方案,并且有了初步的验证。这种方案需要有一定的PCB焊接功底(起码遇见DFN、VQFN封装能轻松应对吧),也需要一些工具,包括锡膏(中温,推荐183度,但需要冷藏保存)、BGA153钢网、锡膏刮板、热风枪、焊台(烙铁)、吸焊带、镊子、助焊剂、聚酰亚胺耐热胶带、洗板水。如果你不具备这样的手艺和工具,可以先把emmc和钢网买回来,再去找个修手机的帮你换上去。

我猜很多人都不想看思路和过程,所以我先把方法步骤放前面,思路啥的放后面。回头如果方便的话录个视频发b站上。下面直接开始讲步骤。

2  更换emmc

这里重复一遍,需要准备的材料:手、眼睛、183度中温锡膏(我用的维修佬)、emmc闪存、BGA153钢网(和emmc一起买了)、锡膏刮板(随便一块硬点的卡片就行)、热风枪、烙铁、吸焊带(吸锡带)、镊子、助焊剂、聚酰亚胺耐热胶带、洗板水。

7月8日更新:视频: 空间不足?给Jetson Nano更换emmc硬盘(扩容)_哔哩哔哩_bilibili

图我就不放了,因为做的过程中忘记拍了,后面有机会再补图,直接说步骤吧。

1)清理emmc焊点:烙铁320度左右,先给emmc的焊点上刷点助焊剂,然后用烙铁和吸锡带将原本的锡去除(如果上面的是高温锡,就不好焊了,如果本来就是中温锡可以省略这一步),清理干净后焊点应该会呈现黄铜色。

2)emmc植锡:将BGA153钢网对准emmc的焊盘,再将emmc和钢网固定好(不会移位,我这里用的是聚酰亚胺耐热胶带),然后将解冻好的锡膏刷在钢网对应的孔位里,保证每一个孔都是均匀饱满有锡的,然后风枪210度左右,先给钢网均匀预热一下,再对着孔位吹,直到将每一个孔的锡吹化即可,等待其冷却后将emmc轻轻取下。(这一步不会的话,去找教程吧,不难)

3)拆卸nano核心板上的emmc闪存:首先固定好核心板,给emmc周围适当的贴上聚酰亚胺耐热胶带,然后给emmc芯片周围上点助焊剂,风枪280度左右,适当距离吹个一分钟(自己把握),等到芯片轻轻推动可以自动归位时,用镊子取下,注意不要弄掉周围的电阻电容。

4)清理核心板上的emmc焊盘:同第(1)步,清理干净锡,然后在中间上一点助焊剂。

5)将植好锡的emmc焊到nano核心板上:将植好锡的emmc放到焊盘上对准,风枪220度吹,当轻轻推动芯片,它能够自动归位时,就焊好了。

6)清理板子:撕掉胶带,用洗板水和棉签将板子上的助焊剂清理干净。

如果不太放心的话,可以用万用表量一下emmc供电对地的阻值,别短路了。通常可以在emmc供电的滤波电容上测量。

3  刷机

3.1 我的刷机步骤

这里需要先说一下我这个载板的刷机步骤,用官方套件的朋友可以参考下(后面的内容需要以这部分内容为基础)。

首先准备三个包,首先将这三个包放到同一个文件夹下(不要有中文路径):

Tegra210_Linux_R32.4.3_aarch64.tbz2

Tegra_Linux_Sample-Root-Filesystem_R32.4.3_aarch64.tbz2

Realtimes_L4T_3243_nano_v1.5.tar.gz

下面开始配置:

1)Linux Driver Package

sudo tar -vxf Tegra210_Linux_R32.4.3_aarch64.tbz2

解压这个包,得到Linux_for_Tegra这个文件夹

2)设置根文件系统

cd Linux_for_Tegra/rootfs

sudo tar -jxpf ../../Tegra_Linux_Sample-Root-Filesystem_R32.4.3_aarch64.tbz2

解压后会在rootfs文件夹下生成nano的根文件系统。

3)安装BSP(Board Support Package)支持包

sudo tar -xvf Realtimes_L4T_3243_nano_v1.5.tar.gz

cd Realtimes_L4T_3243_nano

sudo ./install.sh

cd ../Linux_for_Tegra/

sudo ./apply_binaries.sh

解压得到的Realtimes_L4T_3243_nano必须和Linux Driver Package处于同一目录。进入该目录运行install.sh,可将BSP的相关配置内容写入到Linux Driver Package中(具体可以去看看这个脚本)。【这里的BSP配置文件,包含了nano的fstab(filesystem table,即分区表)相关配置,这一点非常重要,后面需要修改emmc的分区表配置】

4)刷机

先让nano进入recovery模式,通过microusb线和PC(ubuntu)相连,进入Linux_for_Tegra目录,执行(我的载板是RTSO-6001b):

sudo ./flash.sh rtso6001-b mmcblk0p1

烧录完成后会提示Success。

如果是英伟达官方的套件,刷机步骤应该和上面大同小异,总结来说就是三步:1)解压得到Linux_for_Tegra(可以把它理解成一个刷机工具吧);2)设置根文件系统,其实就是解压和拷贝文件;3)安装BSP支持包,这是很重要的一步,应该也是不同硬件有所区别的步骤。

3.2 修改BSP支持包中的配置并刷机

为了适应新的emmc(我这里是16G换64G),就需要改BSP支持包里头的配置文件。由于我这里用的是RTSO-6001b载板,所以在商家提供的BSP支持包内,需要修改对应6001b载板的配置文件。否则,刷进去应该进不了系统(我试过直接按原步骤刷机,结果就是进不了系统)。至于为什么要这么改(也就是我的摸索过程),就放最后面了。

下面直接说我的做法。

millium@millium-pc:~/jetson_nano/Realtimes_L4T_3243_nano$ ls
install.sh  l4t-nano-3243.tar  readme.txt

回顾一下上面安装BSP支持包的步骤,其中运行了install.sh这个脚本,这个脚本主要的工作就是解压BSP支持包(l4t-nano-3243.tar,含有一些.conf配置文件和.common文件),并将其复制到Linux_for_Tegra下。所以需要先将这里头的配置文件修改好,才去运行install.sh。

因为关于RTSO-6001b这个载板的配置文件有好几个,我还没搞清楚它要用哪一个,所以我索性都改了,其中一个.conf配置文件主要内容如下(其实基本上都一样的):

EMMC_CFG=flash_l4t_t210_emmc_p3448.xml;
BLBlockSize=1048576;
source "${LDK_DIR}/rtso6001-b.conf.common";
T21BINARGS="--bins \"EBT cboot.bin; "

ROOTFSSIZE=14GiB;
VERFILENAME="emmc_bootblob_ver.txt";

需要修改的内容为ROOTFSSIZE

ROOTFSSIZE=55GiB;

也就是说对于64GB(64*1000*1000*1000 Byte)的emmc闪存,我将55GB(55*1024*1024*1024 Byte)空间划分给根分区。至于为什么是55GB,其实是实验得到的值,初步猜测是nano的分区表除了根文件系统以外,还需要配置一些别的分区,所以不能设置太大。

(关于磁盘空间容量单位,这里.conf、.commom、shell脚本里头应该都是1024进制,emmc按1000进制,系统内好像也是1000进制)

对于上面对应的.commom文件(这里指的是rtso6001-b.conf.common),里面同样需要修改一个值:

ROOTFSSIZE=14GiB;

同样修改为:

ROOTFSSIZE=55GiB;

修改完成后,再运行install.sh将配置文件写到Linux_for_Tegra目录下,再进行后续的刷机工作。这样一来,在刷机过程中生成的分区表就会按照这里的配置进行(根分区55GB,实际得到的是57.9GB,还没搞清楚是为什么)。

总结一下就是:换emmc,就要修改BSP支持包中的配置文件(.conf和.commom)。

如果你是用的是官方的套件,思路其实也是一样的,可以参考这种方法,因为官方的开发手册里面有提到:flash.sh(上面的第(4)步刷机有提到)读取分区配置文件,将<device>.conf中的关键字的值读取出来(比如这里的ROOTFSSIZE),然后再生成分区表。

此方法应该也适用于TX2、Xavier NX的emmc更换。

4  一些问题的具体解释

上面的方法中,有好多地方没有给出具体的解释(为什么要这么做),所以我觉得可以把这部分内容写一下(其实就是我自己摸索的过程),分享本小白的学习过程,没整明白的地方也可以和大家探讨学习。

嗯,字有点多,今天先到这吧,后面再补一补这块内容。

7月4日更新,详细点的讨论内容可以看我这篇文章:

给Jetson Nano更换eMMC闪存【下篇 - 一些问题的解释和探讨】

5  效果图

有图有真相。

更换后的效果(原emmc根分区14.7G,更换后57.9G,应该是1000进制?)

载板和nano(nano在底下插着)

更换前(右16G)和更换后(左64G)的emmc。其实这里搞了个乌龙,64GB的emmc本来应该买SDINBDG4-64G的,我买错成SDINBDA4-64G了。虽然用起来也ok,但是速度会慢一些,因为前者是MLC颗粒,后者是TLC颗粒。当然,现在tb上买到的好多都是拆机片,对于嵌入式计算机来说,其实应该问题不大,如果你想买全新的片子,可以去立创商城买,只是会比较贵,还不一定有现货。

给Jetson Nano更换eMMC闪存(扩容)相关推荐

  1. UFS和eMMC闪存差异在哪?

    首先我们需要知道UFS和eMMC各有什么技术特点,这里我们再用通俗的语言和大家分析一下,然后介绍这几项技术代表厂商分别都是谁,量产.成本又是一个怎样的情况.首先我们需要知道,一般一块闪存(就是我们常说 ...

  2. 使用 eMMC 闪存设备的磨损估计

    ​ 几十年来,闪存一直是嵌入式系统的一个重要课题.与其他存储技术相比,它允许大幅改进电子设备的大小和鲁棒性.闪存存储的其他优势包括缺少移动部件和降低功耗.然而,闪存的挑战并没有在消费类电子产品中广为宣 ...

  3. 安卓 linux找回内置存储,安卓手机坏了拆eMCP/EMMC闪存恢复数据教程

    如果一个手机彻底坏了,开不了机,比如摔坏的,完全无法正常维修了,那么如果手机里有重要的数据要怎么恢复呢?下面就给大家一个思路,但需要有专业的焊接的设备才可以,但一般是可以恢复完整的数据的. 首先手机可 ...

  4. 手机闪存速度排行_手机很卡可能是只是因为闪存颗粒太差 EMMC UFS大对比

    原标题:手机很卡可能是只是因为闪存颗粒太差 EMMC UFS大对比 在经历了华为的"闪存门"事件以后,人们都开始关注关于手机内存的相关知识.那么所谓的EMMC和UFC到底有什么差别 ...

  5. 测试emmc读写速度软件,真机闪存实测:闪存读取速度到底什么鬼差距有多大建议收藏...

    很多人都不知道什么叫做UFS2.1.UFS2.0.和eMMC5.1. 首先犬君给大家做一个速度上的排序: UFS2.1>UFS2.0>eMMC5.1. 目前来说UFS速度是大幅度领先eMM ...

  6. jetson nano 烧录、更换镜像源、配置xrdp、安装Archiconda、配置CUDA、安装pytorch环境一条龙服务

    jetson nano 烧录.更换镜像源.配置xrdp.安装Archiconda.配置CUDA.安装torch环境一条龙服务 一.jetson nano烧录 1.jetson nano上电 2.镜像烧 ...

  7. Jetson nano 系统安装

    Contents Jetson Nano 在 EMMC 上安装镜像 U 盘启动和 TF 卡启动 U 盘启动 (复制 eMMC 上系统) TF 卡启动 设置远程登录系统 SDK 安装 使用 SDK Ma ...

  8. 华为p10 内存测试软件,华为p10闪存门怎么回事 华为p10/P10Plus闪存怎么测试

    华为p10闪存门怎么回事?华为p10闪存门是什么?华为p10/P10Plus闪存怎么测试?最近华为P10真是命途多舛呀,刚开始无论从外观设计还是性能上(主要是拍照上)都是广受美誉,但是随后华为面临的却 ...

  9. 内存、外存、硬盘、磁盘、闪存,傻傻分不清?

    引言   平时我们买手机,关注最多的配置就是内存了,比如6G+64G.8G+128G等等.但是很多人容易弄混这两个概念.之前我遇到有人问我,说买平板是64G内存,还是128G内存好,128G有点贵,6 ...

  10. 手机闪存速度排行_真机闪存实测:闪存读取速度到底什么鬼差距有多大

    AndrodBench 同时运行 测试环节现在开始: AndrodBench 荣耀V9 首先跑完测试 AndrodBench 华为P10 紧随其后 AndrodBench 三款手机均跑完测试软件 三款 ...

最新文章

  1. php 使用webservice_PHP中如何调用webservice的实例参考
  2. oracle usehash,/*+use_hash(t1 t2)*/的神奇
  3. mysql把游标数据存入表中_mysql数据库怎么使用游标
  4. java 数组构造_java – 从数组构造(非二进制)树
  5. js获取表单文本框中的值
  6. 软考,个人快速成长最好的投资
  7. js双通信java,js和java的http通信
  8. 外贸企业邮箱域名怎么注册?企业邮箱申请域名流程?
  9. k60的FTM模块:配置电机、编码器、舵机
  10. 计算机维修高级技能,高级计算机维修工操作技能考核试卷
  11. 简单教你提高网站速度的6种小方法
  12. 写字机器人制作教程 midt-bot
  13. 消防设施操作员考试真题、模拟练习题库(7)
  14. 交换机虚拟化和堆叠的区别_企业网络基础EI CCIE设计部署如何理解三层交换和路由器的区别...
  15. SCI论文发表的流程是怎样的?
  16. 使用 spacedesk 与 parsec 让安卓平板 或者电脑 作为电脑的拓展屏 的简单介绍
  17. Linux系统管理-C编程
  18. python常用单词下载_python创建属于自己的单词词库 便于背单词
  19. 斐讯db2_斐讯N1盒子OpenWRT系统相关问答
  20. 美国网瘾戒除中心:没有电击、隔绝WiFi,治一次18万元

热门文章

  1. Word中插入分隔线
  2. cad的php文件怎么用,CAD无法弹出打开、保存等窗口,用FILEDIA解决
  3. Flink的State与Rescale
  4. 工单、工艺路线及工作中心的表结构
  5. html5分辨率异常自动检测
  6. 网络词典[U~Z](转)
  7. uni-app 极光推送
  8. 巨佬Jake Wharton谈Android对Java 8的支持
  9. 溢出的文字如何省略号显示
  10. react hooks子给父传值