完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
你好微芯片社区!我是这里的新手,所以请原谅任何愚蠢的问题。所以这里的要点是:我设法从PIC18F2480中取出一些1和0。我想知道,如果不逐行逐行地将机器代码转换为汇编语言并试图理解它,我是否能够理解它的含义。我想,我要的是某种反汇编器和/或反编译器或其他软件逆向工程工具。以下是与这个问题相关的背景:我叫约翰·迈耶;我是俄勒冈州波特兰市的乌贼汽车诊所的老板。我是美国为数不多的几个从事名为Think City的瑞典品牌电动车研发工作的人之一。不幸的是,这家制造商倒闭了,我找不到汽车控制模块的任何文档,还有一些问题需要解决。具体地说,我附上的.hex文件来自PTC(正温度系数)加热器模块(汽车的车厢加热器);当汽车关闭时,加热器不知道立即关闭,因此,如果汽车的点火在几秒钟内被循环关闭和恢复,那么从加热器吸取的大电流导致牵引电池管理系统中的预充电电阻着火。我想更新代码来解决这个问题。还有一些其他的控制模块也使用PIC芯片,但不是特别相同的一个。我想为他们所有的人记录代码,并且能够找到将来可能出现的其他错误。我主要是一个机械师,所以我可能在这里有点不太熟悉,但是我确实有电子设备的经验,我已经参加过一些编程课程,包括C++的程序。至少我知道了头和makefile是什么。我还制作了一个电路板的示意图,这个PIC安装在上面,所以我知道哪些引脚也做什么。预先感谢!哦,如果你好奇的话,你可以在TwitkCuyPdxcom和CuttLeFisher网站上了解更多关于思考的内容。
|
|
相关推荐
19个回答
|
|
|
你有没有想过把同样的代码编程到另一个PIC芯片中,它仍然有效吗?
|
|
|
|
|
|
如果您从芯片读取数据并将其导入MPLAB,它将在PIC ASM中显示代码。但是PIC ASM远不是C++
|
|
|
|
|
|
嗨,据我所知,Think City是由挪威的一家公司设计的,由Valmet汽车公司在Uusikaupunki在芬兰生产。迈西尔
|
|
|
|
|
|
在阅读/修正一个被拆解的PIC程序时,你可以扔掉基于桌面的C++特定体验。使用算法和基本的编程结构,忘记剩下的部分。在PIC中,你没有庞大的框架可用于桌面编程,你也不需要。提供一个操作系统来提供所有底层支持。这里您深入了解了裸露的金属,并从那里开始构建。也就是说,我已经快速查看了您提供的十六进制文件的拆卸过程,它非常清晰。我想说这个程序可能是用汇编编写的。y而不是'C',它缺少优化编译器的扭曲代码和冗余gotos,在非优化编译代码中很常见。毫不奇怪,它是一个简单的PIC上的1K大小的小程序。在Timer0循环中,乍一看它好像中断优先级没有使用(PIC16兼容模式)。一大堆子例程。许多易于识别状态机和看起来像是什么,至少一个查找表。还有一些位操作顺序直接与PORT相连。寄存器,最初的程序员对R-M-W风险并不太警惕。总的来说,这并不是非常复杂的练习,但对于没有微控制器和ASM经验的人来说,这是一个困难的时期。最好的问候JorgeEDIT:Typo
|
|
|
|
|
|
我有一个GTO to 7E0在82E附近发生了什么?
|
|
|
|
|
|
不,我还没试过把代码复制到另一个芯片上。目前,我仅有的开发工具是皮卡3。我想我应该投资更多的开发工具…
|
|
|
|
|
|
这绝对是我想采取的步骤,但我无法理解如何打开HEX文件作为文本以外的任何东西。你能解释在导入PIC ASM后要采取的步骤吗?
|
|
|
|
|
|
是的,你是对的!我不知道萨博有什么关系,但福特参与了一段时间。一些老福特认为是用电动车驱动的邻里电动车。这些更像是高尔夫球车--完全不能在高速公路上行驶。你仍然可以在2011Think City上找到很多压印有FoMoCo的零件。2011年所有北美的Think部分在芬兰的Valmet生产,然后送到美国印第安纳州Elkhart的制造厂安装传动系统,包括锂离子电池ma。印第安娜印第安纳波利斯的Enddelde。
|
|
|
|
|
|
大约82E发生了什么?看起来像一个查找表
|
|
|
|
|
|
的确。这看起来像数据,值从0x05E5减少到0051并且这看起来像访问它的例程(注意,它向变量值添加了0x0816):
|
|
|
|
|
|
JohnMayer在得到他的允许后发布的一个下午的一部分……这看起来是一个非常简单的问题,我想回答它,但是在我到达那个点之前还有很多事情要做。我目前仅有的开发工具是PICkit3,并且我正在直接连接到PTC加热器失效的电路板。我没有可以安装加热器的汽车……我用PICkit3做的唯一任务就是从芯片中取出程序存储器,它表明它成功地做到了。我想我可以试着写到芯片上,但是我不确定(1)我会写什么到芯片上,或者(2)以后如何测试芯片。(我想我可以清除内存,验证内存是否清晰,将相同的代码写回内存,读回并验证是否相同。我还有几个失败的PTC加热器,我可以从中提取代码并进行比较。但在真正完成这些操作之前,我将会继续努力。)NG必须投资更多的开发工具。最终,这将包括汽车的所有电子部件,这样我就可以监控控制模块和传感器之间的输入、输出和交互。我真正希望从这个线程中学习如何为自己做您发布的[代码],最好是采取将它抽象到更高层次,以便更容易地理解它。
|
|
|
|
|
|
它更像是从0x05E5到0xFEFB(1509到261)的值:
|
|
|
|
|
|
在MPLAB V892,1。单击Cuffe≫选择设备并选择PIC18F2480.2。单击文件& gt;导入和选择.HEX文件。三。单击View & GT;程序内存并选择符号选项卡。4。右键单击程序内存窗口并选择输出文件。5。输入文件名并单击“保存”。也就是说,谷歌是你的朋友,因为那里有PIC符号反汇编程序。这些反汇编程序有多好是另一回事。
|
|
|
|
|
|
看起来原始程序员不知道LAT寄存器和快速寄存器堆栈。
|
|
|
|
|
|
干得好!做得好!
|
|
|
|
|
|
一些奇怪的事情正在进行,数据存储位置0xF7F没有根据PIC18F2480数据表实现。
|
|
|
|
|
|
在隔离了程序入口点之后,初始化序列和主循环I在地址0x02dc的不同例程中查找第一个初始化例程,并在地址0x02dc找到这段代码,其中至少有三个是特殊的看起来原来的程序员相信RAM会通电清除,或者只是忘记了它在POR中的随机性。RAM的初始化,我刚刚错过了。请参阅下一篇文章,由1和0.EDIT ADD:还注意到在将引脚配置为输出(TRISx)之前,将引脚(PORTx)初始化为安全状态的一种危险方法。这种缺乏正确初始化可能与OP在快速点火关闭(*)、“点火开启”顺序ha时报告的问题有关。当谈到电动汽车时,用“点火”这个词有点奇怪。EDIT:这个程序在主回路的每个循环中都适用。EDIT:对不起,我错过了正确的初始化顺序,正如1和0所注意到的(在下面)。
|
|
|
|
|
|
清除RAM 0x000到0x2FF位于代码org 0x2b2。在0x2b2之前,编辑:Portx在TrISX之前初始化。
|
|
|
|
|
|
HiClear RAM 0x000到0x2FF位于代码org 0x2B2。Edit:PORTx在TRISx之前在0x2B2被初始化。HiThank you 1and0。在您发帖的时候刚刚注意到它。继续纠正我以前的帖子。祝贺Jorge
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
490 浏览 0 评论
5806 浏览 9 评论
2346 浏览 8 评论
2234 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3541 浏览 3 评论
1146浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1115浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
883浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
490浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 22:05 , Processed in 1.065482 second(s), Total 110, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2325