您现在的位置是:首页» windows系统» 如何在bin文件夹中找到bin路径,怎样打开bin文件

如何在bin文件夹中找到bin路径,怎样打开bin文件

2023-10-10 17:15:56
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!解包MSTAR(晨星)芯片的系统或升级bin文件时错误:bin系统文件:用于电视或电视盒子上。工具:mstar-bin-tool-masterpython版本:2.7例子一:C:\tmp\mstar-

今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!

解包MSTAR(晨星)芯片的系统或升级bin文件时错误:

bin系统文件:用于电视或电视盒子上。

工具:mstar-bin-tool-master

python版本:2.7

例子一:

C:\tmp\mstar-bin-tool-master>unpack.py C:\tmp\konka\2\MstarUpgrade.bin

[i] Analizing header ...

Traceback (most recent call last):

File "C:\tmp\mstar-bin-tool-master\unpack.py", line 42, in <module>

offset = header.find('\xff'.encode(encoding='iso-8859-1'))

UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)

例子二:

C:\tmp\mstar-bin-tool-master>unpack.py C:\tmp\konka\2\MstarUpgrade.bin

[i] Analizing header ...

Traceback (most recent call last):

File "C:\tmp\mstar-bin-tool-master\unpack.py", line 45, in <module>

offset = header.find('\xff'.encode(encoding='iso-8859-1'))

UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte

原因:python 3.0以前默认编码是ASC II,而要处理的代码中可能有iso-8859-1、UTF-8、UTF-16、gbk等引起

解决:

在unpack.py开始处增加(3.0版本以下)

import sys

reload(sys)

sys.setdefaultencoding('iso-8859-1')

(python 3.0版本及以上取消了reload(),不适用)

远程固件升级(OTA)是物联网设备必不可少的功能。

因为软件不可避免存在bug,在用户使用设备过程中碰到bug,无法正常使用时,可以通过OTA功能随时随地对设备的软件进行升级,避免了将产品返厂维护甚至退货造成的损失。

我们早期基于ESP8266二次开发的wifi通信模块,由于user2的程序空间用于存储内置的网页。

因此,没有规划OTA的功能。

从几年的使用情况来看,虽然在使用时也发现一些小bug,但是都让客户规避这些bug,并未出现返厂升级的情况。

近期,某大客户在使用我们的产品时,发现的bug却没有规避的方案,最近只后重新升级了一批wifi模块寄给客户替换,浪费了客户不少时间。

于是,痛定思痛,一咬牙把OTA的功能加到了wifi模块上。

在实现OTA方案时,有几个亮点值得分享:

1) 改变内置网页占用一个用户程序空间的做法,将内置网页和用户程序合并,共同占用一个用户程序空间,即对于8Mbits的flash,改之前,内置网页的存储地址从0x81000开启,改之后,与用户程序合并在成一个新的bin文件。

2) 从网上下载了一个二进制bin文件的合并工具对内置网页和用户程序进行合并,在合并生成的二进制文件中,用户程序占用0x000000-0x5A0000的地址空间。而内置网页占用0x5A0000-0x7D0000的地址空间。

3) 不使用esp8266提供的update的接口,而是自己实现了一套基于TCP server&TCP client以及自定义升级软件的升级协议,使得升级方案更加简洁紧凑,可靠性大大提高。

4) 通过esp8266的API接口system_upgrade_userbin_check判断当前运行程序所有的存储空间,如果在userapp1空间,则将通过自定义协议发送的bin文件数据存入userapp2,否则存储userapp1.

5) 将由用户程序以及网页合并得到的bin文件拆包分帧发送给模块,对于每一帧数据,在写入flash之后再读出计算crc16数据并与接受的crc16数值比较,同时对每一帧数据的crc值组成新的数据,再算crc进行校验。确保了bin文件传输以及存储的绝对可靠,避免升级砖的情况。

6) 将包括用户程序和网页的二进制数据完整写入另一个用户程序空间之后,调用esp8266的下述API接口,设置boot参数,让boot程序启动之后跳转到另一个用户程序空间执行用户程序。

system_upgrade_flag_set(0x02);

system_upgrade_reboot();

7) 在编译生成用户程序时,需要分别修改Makefile的APP变量值为1和2,生成userapp1地址和userapp2地址的用户程序,这两个程序分别与网页合并生成两个不同的bin文 件,在进行OTA升级时,上位机需要根据从模块读回当前程序所有地址的情况选择合适的bin文件。

Unix/Linux为什么有/bin和/usr/bin,usr是user的意思吗?

话说50年前,Unix跑在PDP-11上,它只有两个1.5MB的存储盘,所有系统文件都放在第一个盘上。Unix越来越大后,一个盘放不下了,Unix发明人Ken Thompson和Dennis Ritchie决定把/bin目录下启动时不需要的文件移到第二个盘上去。第二个盘是用来存放用户文件的,文件都放在/usr目录下,所以移到那里的/bin就变成了/usr/bin,从此就有了/bin和/usr/bin。所以usr最早确实是user的意思。后来有了第三个盘,用户文件移到那里的/home目录下,经过各种演化,usr的意思变成了unix system resources(unix系统资源),只用来存放系统相关的文件,类似的目录结构被其他系统和Linux采用和扩展。

顺便说一下,/etc目录早期用来存放所有和系统及设备无关的其他文件,所以叫etcetera (等等),现在主要是存放各种配置文件。今天看到个不错的解释,editable text configurations(可编辑的文本配置文件)。

#计算机科学与技术#

针对c/cpp编译出来的bin文件,在发布打包镜像时,需要确保该bin依赖的so库等是齐全的,可以使用ldd来查询依赖并且把相关so文件拷贝到同目录。下面的这个脚本可以很方便地做这个事情:

deplist=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' )

cp -L -n $deplist $2

【鸿蒙操作系统应用笔记211028A】

wWw.Xtw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com