OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2498|回复: 12

问个比较基础的问题,关于代码加载的

[复制链接]

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
发表于 2017-10-30 18:19:08 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 mack13013 于 2017-10-30 18:21 编辑

STM32的代码加载过程大体是怎样的?是一边从flash里读代码一边执行代码吗?还是说加载一段代码到片上内存或者片外内存中去执行,然后边加载边执行?


问这个问题是因为最近在搞一个MC68302的芯片,芯片有20pin地址总线(A0-A19),寻址却是用24位,其中A23-A20变成了CS0-CS3,CS0接的是ROM(64K),CS1接的是片外RAM(32K),CS2接的是某个通讯外设,
程序中经常会出现jsr $103032这样的子程序调用,而$103032这个地址的子程序实在不知道怎么找他对应的代码(这是一个绝对地址,按我的理解应该在ROM的0x3032处或者0x3032-XXX处,然而0x3032并不正确),有谁知道其地址是怎么换算的吗?

最佳答案

查看完整内容[请看2#楼]

终于明白了。代码中间经常有 move.b (a0)+,(a1)+ dbf d0,loc_3F7A 这样的拷贝操作,而a0的地址是$24B6,转跳到$24B6之后全是些dc.b $25之类的数据,是因为读取大小端的问题。 $24B6地址按word读取之后,要把高低字节对调,然后再反汇编才行。 这里能动态调试就好了。。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
 楼主| 发表于 2017-10-30 18:19:09 | 显示全部楼层
终于明白了。代码中间经常有
move.b  (a0)+,(a1)+
dbf     d0,loc_3F7A
这样的拷贝操作,而a0的地址是$24B6,转跳到$24B6之后全是些dc.b $25之类的数据,是因为读取大小端的问题。

$24B6地址按word读取之后,要把高低字节对调,然后再反汇编才行。


这里能动态调试就好了。。。。
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2017-10-30 19:08:37 | 显示全部楼层
本帖最后由 aozima 于 2017-10-30 19:12 编辑

复古还是反向?

我觉得你可以看下CS0的基地址是多少? 也许不是从0开始的,
而是从 0x100000
jsr $103032实际是跳转到ROM或外扩SRAM的偏移地址 0x3032(12KB)
也许需要你去简单看下这芯片的汇编语法。
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
 楼主| 发表于 2017-10-31 04:45:45 | 显示全部楼层
本帖最后由 mack13013 于 2017-10-31 07:57 编辑
aozima 发表于 2017-10-30 19:08
复古还是反向?

我觉得你可以看下CS0的基地址是多少? 也许不是从0开始的,
没的拣的,需要什么样的设备就要去做什么样的工作,工作需要逆向68K,就要去逆向68K,只能个人去适应工作。


跟我猜想的一样啊。

片外设备的基址只能是0x100000   0x200000   0x400000  0x800000,除非有译码芯片将4个CS引脚输出进行整理,要不然片外设备只能有这几个地址。

问题是$103032这个地址里的内容是什么啊。这个地址里的内容只能是从ROM中拷贝过去的,那么RAM中0x3032的数据对应ROM中哪里的数据?ROM中0x3032中的数据是一片DC,无法识别成指令的。0x3032尝试作为偏移地址,或者自身作为基址之后再尝试添加0x400或者0x36C(36C之前是一片数据,没有指令)或者0x04(仅有此处一个转跳)或者0X2000(系统上电默认CS0-ROM片选,读取8K代码)等各种偏移地址,都不合理。 我想知道$103032这个子程序干了什么事情。。。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-10-31 14:44:20 | 显示全部楼层
STM32普通的运行方式就是FLASH运行方式.不用加载到内存.
加载到内存方式运行.只能运行小程序.他的内存是比较小的.除非用的是外部RAM.那也要是高级大容量STM32才行.
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
 楼主| 发表于 2017-10-31 15:29:25 | 显示全部楼层
操作系统 发表于 2017-10-31 14:44
STM32普通的运行方式就是FLASH运行方式.不用加载到内存.
加载到内存方式运行.只能运行小程序.他的内存是比 ...

简单理解,就是如果PC的数值是0x08000808,那么他会去FLASH的0X0808位置读出指令,并根据0x0808的指令去进行下一步执行是吗?
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
 楼主| 发表于 2017-10-31 16:02:13 | 显示全部楼层
操作系统 发表于 2017-10-31 14:44
STM32普通的运行方式就是FLASH运行方式.不用加载到内存.
加载到内存方式运行.只能运行小程序.他的内存是比 ...

如果碰到jsr $103032这样的指令,应该怎样去找$103032的内容??
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-11-2 00:59:17 | 显示全部楼层
STM32程序,不用研究这么深.会C语言就行了.
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
 楼主| 发表于 2017-11-2 09:21:36 | 显示全部楼层
本帖最后由 mack13013 于 2017-11-2 09:23 编辑
操作系统 发表于 2017-11-2 00:59
STM32程序,不用研究这么深.会C语言就行了.

写一个STM32是不用这样搞。

你逆向一个含有STM32的系统试试。尤其是有多种片外FLASH 和ram的那种。

当然STM32的还是好搞,毕竟他的常规片选地址分配都知道,比较熟悉。


或者你尝试逆向一个apk试试,比如写一个andriod的反汇编工具


回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-11-2 15:37:57 | 显示全部楼层
楼主这么厉害 ,还玩逆向工程开发.
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
 楼主| 发表于 2017-11-2 17:32:43 | 显示全部楼层
本帖最后由 mack13013 于 2017-11-2 17:33 编辑
操作系统 发表于 2017-11-2 15:37
楼主这么厉害 ,还玩逆向工程开发.

个人没的选的。
工作上需要你做什么,你就要去做什么。

不是说我会做什么,就会有什么样的的工作让我做。
而是说,工作有什么,个人就必须要会什么。


你的积分怎么这么多???混分巨兽啊
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-11-3 07:40:59 | 显示全部楼层
本帖最后由 操作系统 于 2017-11-3 07:43 编辑

混分??感觉你自己不是来混分的是吧.我就是来混分的.呵呵..
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8024
金钱
8024
注册时间
2014-8-13
在线时间
1595 小时
 楼主| 发表于 2017-11-3 07:47:40 | 显示全部楼层
操作系统 发表于 2017-11-3 07:40
混分??感觉你自己不是来混分的是吧.我就是来混分的.呵呵..

你的分高,你比我能混,你是前辈。

前辈您好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 09:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表