帖子比较长,请耐心观看哈!
一、前言
之前在坛子里发过贴,向坛子里的大佬们讨教过,在此先谢谢各位不吝赐教的大佬们!谢谢你们热心的帮助!
以前一直有想法,想把那个开店宝的收银机拿来当试验品,这个收银机是开店宝WEIPOS品牌,帮朋友的亲戚升级收银机换下来之后,朋友送给我的。
机器配置:CPU(RK3368),运存RAM(1G),ROM内置存储(4G),主要是4G存储空间有限,经常提示空间不足,运存勉强够用,看到主板背面有预留的可以焊接RAM内存颗粒的焊盘位置,连焊盘周边贴片电容和电阻都焊好了,感觉是可以直接扩容RAM的,等内置存储扩容搞定,再考虑运存扩容;
一直拿收银机当平板电脑在用,看视频和电影挺流畅的哈!比较烦人的就是多装几个软件就提示空间不够。
图片-1:1-ok.jpg (73.15 KB, 下载次数: 0)
2020-10-26 10:11 上传
图片-2:
2-ok.jpg (141.53 KB, 下载次数: 0)
图片-2
2020-10-26 10:11 上传
对于这种扩容内置存储和运存操作,之前没有这方面实际动手的经验,只是在网络上看过相关的帖子和视频,也不敢轻易动手。
在发帖经过大佬们的指点之后,下定决心开始折腾了,折腾期间也是很折磨人的哈!不过在折腾中寻找快乐!在折腾中增长知识,也是乐在其中哈!
**********************************************************
二、前期准备阶段:
首先是扩容知识方面的了解与学习,看过坛子里高手给老丈人的小米手机扩容的帖子,了解学习瑞芯微固件方面的知识,之前没接触过瑞芯微方面的机器,没折腾过,要说接触的话,以前折腾过联发科系列芯片平板电脑的固件,那纯粹是为了好玩!
下载瑞芯微固件方面的打包解包、刷机、驱动等相关的工具软件。
我用到的工具软件和驱动:
U盘主控板EMMC读写工具(ProgramTek)
AndroidTool_Release_v2.54(瑞芯微刷机工具)
Notepad+ (文本编辑器)
Beyond Compare 4 (文件对比工具)
DriverAssitant_v4.91(瑞芯微驱动程序)
RK3399_RK3288固件解包工具FWFactoryTool5.50(瑞芯微固件解包打包工具)
RK3368收银机系列的固件和资料基本没有,于是下载了一些RK3368芯片的安卓机顶盒类型的固件,解包后了解固件的相关情况。
在网络上搜索与瑞芯微RK系列关于扩容的内置存储有关的知识点和帖子。同样RK3368的资料极少,有的仅能作为参考之用;倒是RK3399、RK3288和RK3128等芯片的资料还不少,但是可以确定的是,同是瑞芯微系列的CPU,好多资料和使用方法应该都是相通的。
其次是硬件和工具方面的准备,查找与原机主板上的内存颗粒参数一致的相关资料,还有EMMC字库的相关资料,确定后TB下单采购,还有采购一些焊接用的工具和耗材,如植锡用的钢网,还有焊锡膏,EMMC字库读卡器等,风枪(迷你版)和低温锡以前都有准备,直接都可使用。可以看一下图片工具、内存颗粒【K4B4G1646E-BYK0】和EMMC【KLMAG2WEPD-B031(16GB)】字库,顺便买了两颗32GB的。
图片-3:图中画红圈的是用来练手的山寨机主板3-准备的工具材料和练手用的山寨机主板-ok.jpg (108.23 KB, 下载次数: 0)
2020-10-26 10:11 上传
扩容字库对于我来讲比较难的就是芯片植锡,之前完全没弄过,但是可以肯定的是动手能力还可以哈,反正拆东西还是挺厉害的!!先买了工具和材料练练手,感受一下吧!还有机器没有官方线刷固件,这个也比较有挑战性!
看图片,找了一个山寨的手机(能开机,充话费送的)拆字库练手开始了!
图片-4:用山寨机主板上的eMCP(2+8)芯片练手进行植锡操作!
4-山寨板子2 8的芯片练手用的-ok.jpg (60.2 KB, 下载次数: 0)
2020-10-26 10:11 上传
*********************************************
三、字库芯片植锡替换阶段
练了几次开始有感觉了哈!!
经过上面的一系列的准备和练习,最后进入更换扩容字库的实操阶段!下面介绍详细过程。
开始拆主板上的字库芯片了,拆之前还是把周边的元件做个保护,贴上隔热胶带和铝膜胶带。风枪调到350度,风速7,每个风枪的都不一样的,很方便就拆下来了,焊盘没有脱落的情况。
图片-5:对芯片周边元件做好保护,准备拆字库。5-准备拆字库,主板保护图片-ok.jpg (147.11 KB, 下载次数: 0)
图片-5
2020-10-26 10:11 上传
图片-6: 很轻松就把主板上的字库拆下来了。
6-4G字库拆下来图片-ok.jpg (126.06 KB, 下载次数: 0)
2020-10-26 10:11 上传
图片-7:拆下来的字库焊盘完好,没有脱落的情况。
7-拆下来4G字库焊盘完好-ok.jpg (45.33 KB, 下载次数: 0)
2020-10-26 10:11 上传
下面开始给4G字库芯片植锡了,看一下,还可以哈!第一次植锡基本还算可以!
图片-8:4G字库植锡效果图
8-4G字库植锡效果图-ok.jpg (87.1 KB, 下载次数: 0)
2020-10-26 10:11 上传
植锡完成后开始焊接到U盘字库读卡器上,还算顺利,基本一次就搞定了。16G字库也是一次植锡并焊接完成。
图片-9:准备将4G字库焊接到U盘上。
9-准备将4G字库焊到U盘上-ok.jpg (111.61 KB, 下载次数: 0)
2020-10-26 10:11 上传
图片-10:顺利焊接好4G字库
10-顺利焊接好4G字库-ok.jpg (142.93 KB, 下载次数: 0)
2020-10-26 10:11 上传
插入电脑试试是否正常,插入电脑提示“使用驱动器I:中的光盘之前需要将其格式化。”如果有这个提示证明焊接没有问题哈!当然,此时千万不要进行格式化操作!
焊好的4G字库插入电脑也提示需要格式化,证明焊接没问题!焊好的16G字库插入电脑也提示需要格式化,证明焊接完好无误!
图片-11:
11-4G字库焊好后插入电脑提示需要格式化-ok.jpg (176.96 KB, 下载次数: 0)
2020-10-26 10:11 上传
接下来就是字库读取与克隆的过程了。
图片-12:字库读取过程和字库读取的文件准备写入新字库芯片。
12-字库读取过程-ok.jpg (149 KB, 下载次数: 0)
2020-10-26 10:11 上传
图片-13:字库文件已写入16G字库芯片。
13-字库文件已写入16G字库芯片-ok.jpg (105.36 KB, 下载次数: 0)
2020-10-26 10:11 上传
图片-14:火急火燎地就把新字库焊到主板上了。
14-火急火燎的就给焊到主板上去了-ok.jpg (299.33 KB, 下载次数: 0)
2020-10-26 10:11 上传
这时候,我才想起来不是要把读取的固件修改为16G容量的大小后再写入新字库吗?可是我不会使用WINHEX软件,我也不想把新字库再拆下来了,那就将错就错吧,先开机试试能否正常启动?
图片-15:加电开机很快进入系统,字库移植没问题!
15-加电开机很快进入系统-ok.jpg (154.21 KB, 下载次数: 0)
2020-10-26 10:11 上传
如果能自动识别内置【之前查过相关的帖子说瑞芯微机器安卓6.0以上的版本能自动之别存储空间大小】存储容量岂不更好!进入系统查看内置存储容量没变哟!恢复出厂设了也不行,看来不能自动识别。
图片-16:查看内置存储同容量跟之前一样哈!恢复出厂设置之后也不行呢!16-查看内置存储同容量跟之前一样哈-ok.jpg (124.43 KB, 下载次数: 0)
2020-10-26 10:11 上传
图片-17:USB连机看了一下分区的情况,新字库16GB容量已经识别了,内置存储分区userdata要改才行。17-USB联机看了一下分区的情况,新字库容量识别了内置存储分区要改才行-ok.jpg.jpg (109.7 KB, 下载次数: 0)
2020-10-26 10:11 上传
我实在是不想拆下新焊上去的字库了,因为担心用风枪拆装几次芯片就废了,再说了我也不会用WINHEX修改字库文件,还是先尝试能不能不拆字库把分区容量识别的问题搞定,实在不行再拆字库,于是我又开始了下一步的折腾了!
************************************************
四、分区容量识别操作阶段
既然官方没有线刷包,我把机器里的固件提取出来(需要ROOT后才能提取固件),再用刷机工具刷入机器,这样机器格式化后能不能正确识别内置分区容量?先用USB连机查看各分区的情况,然后用ADB命令把各分区提取出来。
这机器主板上有一个RECOVERY键,USB线连机后,先按住这按键不放,然后按电源键开机可进入LOADER模式,这时刷机工具底部会显示【发现一个LOADER设备】,点工具软件设备分区表会显示机器设备分区名称、地址和容量大小,我比对了一下与我提取的文件分区名、地址和大小是一样的,看图片。
图片-18
18-分区比较图-ok.jpg (230.65 KB, 下载次数: 0)
2020-10-26 10:11 上传
虽说有提取的固件,有刷机工具,还是不敢轻易刷机,担心刷成砖头哈(其实怎么刷都没事,底层的东西不弄坏一般不会有问题)。
我看了有人的帖子是在Ubuntu系统下找到device目录下的BoardConfig.mk文件,将BOARD_USERDATAIMAGE_PARTITION_SIZE的大小修改USERDATA文件容量大小参数,重新编译一下,烧写userdata分区(fastboot flash userdata userdata.img),解决分区容量识别的问题,Ubuntu系统用过,但只是略懂皮毛,而且太麻烦看着都头疼哈!
我这个如果只是单纯用userdata文件刷机的话,分区容量与之前一样也不会增加吧?
接下来开始学习研究与分区相关的知识点,之前没深入了解过!
开始查资料,资料很少,找到一篇关于更改分区容量大小的帖子,看过之后经过反复琢磨和计算,终于明白怎样使用win7系统自带的【计算器】程序员模式,进行十六进制和十进制之间的转换换算,也明白了,各分区容量大小与起始地址怎样换算,怎样修改各分区容量大小?感觉收获很大!
之后又找了一些RK3368系列机顶盒的固件,还有那种通刷的固件,解压后查看固件文件,发现其中有都一个parameter.txt文本文件,后来查了相关的帖子说瑞芯微系列芯片的机器是通过这个文件来调整各个分区的大小的。
见图片-19:
19-文件ok.jpg (142.02 KB, 下载次数: 0)
2020-10-26 10:11 上传
可我的机器里没有这个文件怎么办?既然是文本文件,能不能在我从字库中备份读取的那个文件里找到,于是我用WINHEX磁盘编辑软件打开【IMAGE.bin】这个文件,用软件的文本搜索功能搜索到的文件,大家看一下图片。
图片-20:parameter文本记录
20-parameter-ok.jpg (75.49 KB, 下载次数: 0)
图片-20
2020-10-26 10:11 上传
感觉像是系统启动过程中的LOG记录文本,这个文本中启动参数和各分区大小,起止地址等与下载的RK3368盒子通刷固件中的parameter.txt文件中的基本一样,一共有8个记录文本,这也验证了下面关于parameter参数文件的解析处理摘录中介绍的【但是一共有8个parameter,可能7个是作为备份的。】
见图片-21:一共有8个一样的parameter文本记录,我缩小了,便于观看,缩小了也只能看到两个,后面还有6个。
21-一共有八个一样的记录文件parameter-ok.jpg (64.91 KB, 下载次数: 0)
2020-10-26 10:11 上传
见图片-22:这张图片用文本比较软件查看我从IMAGE.bin.txt文本中复制出来的parameter文本记录与通刷版固件中解压出来的parameter.txt文件中内容基本一致。
22-提取出来的文本与分区文件parameter.txt比较-ok.jpg (163.42 KB, 下载次数: 0)
2020-10-26 10:12 上传
摘录帖子里的文字:rk3368对于parameter参数文件的解析处理
这个文件是在uboot中被解析的。
在init_sequence_r中有board_late_init函数
board_late_init中首先就执行了
load_disk_partitions()这一部分。这一部分执行了解析parameter的过程。还有一次解析Parameter的过程是在执行完一次flash以后。刷了新的flash的时候会重新解析一次。
这一次是调用board_fbt_load_partition_table->load_disk_partitions执行的解析
在load_disk_partitions中
首先分配了一块内存用于保存解析的param结构
Parameters有多个Line组成,限制每个Line最大占1024Bytes
#define PARAMETER_NUM 8 // parameter文件的备份个数
#define MAX_LOADER_PARAM (128*512) //Parameters所占的最大Sector数(含tag、length、crc等)
PLoaderParamparam = (PLoaderParam)memalign(ARCH_DMA_MINALIGN, MAX_LOADER_PARAM *PARAMETER_NUM);
申请了 128*512*8字节 512KB的大小。每个parameter文件只有128*512的大小。
【但是一共有8个parameter,可能7个是作为备份的。】
只要按照顺序读取出一个parameter。并且是有效的parameter文件就表明成功了
下面详细介绍一下各分区的容量大小和起始地址以及怎样计算?更改分区的大小。
CMDLINE:console=ttyFIQ0androidboot.baseband=N/A androidboot.selinux=disabledandroidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/initinitrd=0x62000000,0x00800000 mtdparts=rk29xxnand:
0x00002000@0x00002000(uboot), size:0x00002000 8192×512÷1024÷1024=4MB address: 8MB
0x00002000@0x00004000(trust), size:0x00002000 8192×512÷1024÷1024=4MB address: 12MB
0x00002000@0x00006000(misc), size:0x00002000 8192×512÷1024÷1024=4MB address: 16MB
0x00008000@0x00008000(resource),size:0x00008000 32768×512÷1024÷1024=16MBaddress: 32MB
0x00008000@0x00010000(kernel), size:0x0000C000 32768×512÷1024÷1024=16MB address: 48MB
0x00010000@0x00018000(boot), 32MB address: 80MB
0x00010000@0x00028000(recovery), 32MBaddress: 112MB
0x00038000@0x00038000(backup), 118MB address: 224MB
0x00040000@0x00070000(cache), 128MB address: 352MB
0x00002000@0x000B0000(kpanic), 4MB address: 356MB
0x00200000@0x000B2000(system), 1024MBaddress: 1380MB
0x00008000@0x002B2000(metadata), 16MB address: 1396MB
0x00002000@0x002BA000(baseparamer), 4MB address: 1400MB
0x00200000@0x002BC000(userdata), 1024MB address: 2424MB
0x00020000@0x004BC000(radical_update), 64MB address: 2488MB
-@0x004DC000(user)
@符号前是分区的大小
@符号后是分区的起始地址
括号中是分区的名字
单位都是 sector(512Bytes)
比如 uboot 起始地址为 0x2000 sectors (4MB)的位置,大小为 0x2000 sectors(4M)
另外 flash 最大的 block 是 4M(0x2000 sectors),所以每个分区需要 4MB 对齐,即每个分区必须为 4MB 的整数倍。
0x00038000@0x00038000(backup)
backup 分区前的分区为固件区 uboot、trust、misc、resource、kernel、boot、recovery ,后续升级时不能修改分区大小;
backup 分区后的分区 cache、system、metadata、baseparamer、userdata是可以读写的,可以调整分区大小。但是修改分区大小后需要进入 recovery 系统格式化cache分区,再次进入系统后可以正确识别userdata分区容量了。
这下我可以确定,我提取的固件可以刷机了,下载的固件也可以刷入我的机器里了!分区容量识别问题感觉可以搞定了!后来经过多次刷机发现怎么刷也成不了板砖。
接下来开始着手修改parameter文件里的分区大小,先试着把userdata分区改成2GB的容量,成功了。
图片-2323-2g容量-ok.jpg (186.72 KB, 下载次数: 0)
2020-10-26 10:12 上传
分区修改的基本操作方法如下:
1、用【RK3399_RK3288固件解包工具FWFactoryTool5.50】工具把通刷固件【RK3368_Android5.11SE160328】解压出来,修改parameter.txt文件里的分区参数,然后打包固件。
图片-24:解包固件
24-解压固件-ok.jpg (117.47 KB, 下载次数: 0)
2020-10-26 10:12 上传
图片-25:修改parameter.txt文件里的分区参数;
25-1822000-ok.jpg (122.78 KB, 下载次数: 0)
2020-10-26 10:12 上传
2、机器开机进入LOADER模式(先按住recovery按键不放,再按电源开机键),把打包好的固件用【AndroidTool_Release_v2.54】刷机工具中的【固件升级】项把系统刷进去,这个包可以刷入(刷机失败也没关系),但无法进入系统,因为内核什么,system都不一样,没关系,我们只需要在刷机过程中格式化磁盘就行,格式化磁盘时会按照修改后的parameter.txt中分区大小进行格式化。
图片-26
26-低格设备-ok.jpg (138.86 KB, 下载次数: 0)
2020-10-26 10:12 上传
刷写之后不用重启机器,进入【下载镜像】选项,点【设备分区表】按钮就可以看到userdata分区表的容量和起始地址已经更改了。
图片-27:
27_1822000分区表已更改-ok.jpg (203.26 KB, 下载次数: 0)
2020-10-26 10:12 上传
3、之后再次重复第二步的操作进入LOADER模式,用【AndroidTool_Release_v2.54】刷机工具中【下载镜像】选项把之前从机器里提取的固件整个再刷一遍,如果中途重启,显示“下载失败”,可以重新进入LOADER模式分段进行刷机。因为在LOADER模式系统默认1分半钟,之后会自动重启,我提取的固件是整个分区的,刷写时会整个分区刷写会耗费时间较长,超过时间机器会自动重启,所以可以批(几个分区刷写一次)或者单刷某一个分区,全部刷完后开机进入recovery模式,进行data和cache双清。双清之后再次重新进入系统后,userdata分区就可以正确识别了。
图片-28:用【AndroidTool_Release_v2.54】刷机工具中【下载镜像】选项,刷一遍机器里提出来的固件。28_再次刷写一遍提取的固件-ok.jpg (162.89 KB, 下载次数: 0)
2020-10-26 10:12 上传
图片-29:29-分段刷机-1-ok.jpg (259.5 KB, 下载次数: 0)
2020-10-26 10:12 上传
图片-30:刷机完成后重启机器进入recovery模式,双清恢复出厂设置。30-格式化datahecache-ok.jpg (109.67 KB, 下载次数: 0)
图片-30
2020-10-26 10:12 上传
图片-31:双清后进入系统,userdata分区容量已正确识别。
31-进系统显示userdata分区容量已识别-ok.jpg (109.61 KB, 下载次数: 0)
2020-10-26 10:12 上传
图片-32: ADB连机查看分区,userdata分区已正确识别,还剩1个多GB的容量分配给了user 分区了。32-查看分区还有一个GB容量给user-ok.jpg (156.83 KB, 下载次数: 0)
2020-10-26 10:12 上传
说一下:分区修改可以两种方式都行(下载中有大容量内置存储机顶盒刷机包里面就是屏蔽掉以前的分区,后面添加去掉user分区,把userdata分区移到最后),一种按照以前的分区模式,把userdata分区变大,后面分区起止地址作相应的修改就好了,另外一种就是去掉user分区,我看了一下这个分区最终还是指向了userdata分区,把【userdata】分区移到最后,剩余的空间全部给userdata分区。
图片-33,原版分区和去掉user分区修改后参数比较。
33-userdata和无user分区对比图片-ok.jpg (124.05 KB, 下载次数: 0)
2020-10-26 10:12 上传
最后看一下,去掉user分区,把userdata分区调整到最后自动识别剩余空间。我看了一下进入user分区后最后还是进入userdata分区。
说明一下:去掉user分区后,在刷机工具的【镜像下载】项下要把userdata分区移至最下面,同时删除user分区选项,看图片。
图片-34:
34-去掉user分区要删除下载镜像里的user分区-ok.jpg (284.5 KB, 下载次数: 0)
2020-10-26 10:12 上传
图片-35:进recovery格式化data和cache。
35-格式化cache-ok.jpg (124.03 KB, 下载次数: 0)
2020-10-26 10:12 上传
图片-36:系统把剩余的空间分配给了userdata分区。
36-进系统正确识别容量-ok.jpg (77.95 KB, 下载次数: 0)
2020-10-26 10:12 上传
五、最后
这次收银机字库更换收获比较大!也很完美哈!
其实好多事情想象中很难,觉得没有自信,不敢做,真正做起来也没有想象中的那么难!
期间也是一波三折,还以为会把机器刷成板砖呢!还有资料太少也是很苦恼!瑞芯微有一个固件解包打包的工具【瑞芯微固件解包打包工具Vxx.x试用版】全都是试用版,有的用不了,有的功能缺失,用起来可真闹心啊!
专业的好质量工具也很重要!之前买的维修lao的植锡钢网,植锡时老是爆锡,我这里无意贬损某个品牌的产品,只是自己使用不习惯罢了!后来又买了加厚的阿 MAO易修的钢网(钢网孔眼是方孔),怎么植锡都不爆锡,能把控自如!
我对于某个行业中【专业】一词的理解是:既要有很好的技能和责任心,还要有专业的工具作为支撑,这样才能称之为专业!
对于字库更换我是初次接触,连业余都不算,对于帖子中有些词汇使用不够专业的,还请各位专业级大佬斧正哈!
还有个请求!有哪位大神能提供一下关于WINHEX修改固件大小方面的帖子或者教程,造福广大爱折腾的数码爱好者!
希望这个帖子对于有这方面需求者能有所帮助!
最后,谢谢各位能耐心看完此帖!