chunjiu 发表于 2021-3-30 10:04:58

将 B52 ( BigSam - 8052 ) 第一次尝试移植到 STM32F429ZI 上

本帖最后由 chunjiu 于 2021-3-30 11:04 编辑

结果还是比较乐观的,让 Debug 版本全速跑,在 168MHz 的 F429ZI 上能得到大约 135KHz 左右的模拟 8052 主频。虽然与最终想得到的 1MHz差的有点多,但意味着还有实现的可能性,而且可能性很大。

目前的版本是纯软件版,没有使用任何的硬件加速,包括 UART 都是用 GPIO 模拟的,对 Pin 电平状态的检查都是轮询的,所以在后期启用 STM32 的硬件功能来优化这些代码的时候,应该可以大大提升速度。

目前遇到的难题是:源代码中的中文注释在 STM32 的自家 IDE 里,乱成一锅粥 ...

因为写代码时用的 VS Code ,我将 8052 的手册翻成中文分段嵌在源代码文件中,因为可以方便的对照着检查代码,结果导致现在源文件中的代码在调试器里面成了什锦汤了,五颜六色啥也看不清!

最倒霉的是 CubeMX 生成的代码 printf 不能正常工作,啥数字都显示为 0,所以我只能在 debug 中设断点查找全局变量,总算知道了 debug 版本中的 8052 模拟主频,但 release 就没法跟踪了,printf 是废的!


下一步的工作是弄一个能正常打印数值的 printf 框架,再重新整理一下源代码文件内的中文编码,估计是无法识别编码类型才导致的显示混乱。

PS : 查到 printf 的原因了
===================

不支持 long long 变量类型 ,囧 !

Release 的版本最大能支持到 260KHz 左右的主频。

chunjiu 发表于 2021-3-30 11:11:36

第二步骤的测试结果:

由于将来的版本中,GPIO 、Timer、 UART 将全部改为硬件操作,所以将这部分的软件轮询屏蔽后再测试!

得到了 810KHz 的 Release 版本,这就代表有点麻烦了 ...

采用硬件操作后,依然会有一点点软件上的开销,所以难道主频的最上限就是 800KHz 了吗?

我再查查还有哪里可以用来优化来提升主频。

canspider 发表于 2021-3-30 11:28:10

168M跑800K,大概210:1的效率
感觉优化空间还很大

cantonguy 发表于 2021-3-30 11:40:35

应该还有很大空间,标准8052核硬件不是太多东西,就关键是时序指令要精确
理论上100:1应该没问题,加油LZ

zhucezhuanyong 发表于 2021-3-30 11:48:36

你这效率还没lua高吧?

XIVN1987 发表于 2021-3-30 11:50:01


以这个性价比,,是不是用FPGA跑个8052核更划算啊??反正传统8052单片机也没ADC等模拟外设,,

chunjiu 发表于 2021-3-30 11:52:15

谢谢兄弟们的鼓励!加油!最终目标是主频 1.2MHz,这样是常见 51 教材上 demo 例程的主频十分之一,拿来改改做时序的验证时计算起来比较方便。

chunjiu 发表于 2021-3-30 11:55:43

zhucezhuanyong 发表于 2021-3-30 11:48
你这效率还没lua高吧?

这个不重要,重要的是能跑51指令,并且时序精准,工控行业中的时序精度比啥都重要。

我的 debuger 将依赖这些数据并提供给使用者。以后arm芯片再怎么缺货都不怕了。

chunjiu 发表于 2021-3-30 11:57:26

XIVN1987 发表于 2021-3-30 11:50
以这个性价比,,是不是用FPGA跑个8052核更划算啊??反正传统8052单片机也没ADC等模拟外设,, ...

还不是咱们基础工业太落后闹得,国产 51 若有个稍微像样一点设计环境,我就不用整这个玩意儿了。

tuy0326 发表于 2021-3-30 13:26:15

chunjiu 发表于 2021-3-30 11:57
还不是咱们基础工业太落后闹得,国产 51 若有个稍微像样一点设计环境,我就不用整这个玩意儿了。 ...

STC不服,仿真器吊打一切xLink
你竟敢这么说

chunjiu 发表于 2021-3-30 13:52:21

tuy0326 发表于 2021-3-30 13:26
STC不服,仿真器吊打一切xLink
你竟敢这么说

这对跟随 STC 后面混的一帮国内 51 小弟来说,他还是可以牛逼一下的 {:titter:}

zhanyanqiang 发表于 2021-3-30 14:28:46

chunjiu 发表于 2021-3-30 11:57
还不是咱们基础工业太落后闹得,国产 51 若有个稍微像样一点设计环境,我就不用整这个玩意儿了。 ...

伟福 不是吗

chunjiu 发表于 2021-3-30 14:56:14

zhanyanqiang 发表于 2021-3-30 14:28
伟福 不是吗

谢谢兄弟的提示,刚才上网查了一下,哦 ! 比较起来还是 JLINK 比较实惠啊,如果只烧录 BIN 的话 ...

囧!我搞得这玩意儿有点那个了 ... 只能说 Sorry 了 ...

不过还是我自己的项目比较重要,主要是自己用起来顺手 {:titter:}

chunjiu 发表于 2021-3-31 09:29:13

运行效率偏低的原因找到,​之前在 PC 上为 ALU 部件做了一个指令缓冲区:

1 是用来防止 PC 越界, 所以在每个周期内都要刷新指令数据;

2 它原来准备用作对 51 指令进行分支预测, 好用多线程并发;

这些玩意儿在单核的 STM32 上完全没必要. 所以重新调整取指算法, 改成简单的指针检查就行了.

估计之前写的代码中还有很多类似的算法框架, 我全部找出来删掉.

oldban 发表于 2021-3-31 13:35:18

本帖最后由 oldban 于 2021-3-31 13:44 编辑

对于51芯片厂家,我曾设想过一个方案,只需增加少量门电路,配合预先烧录的固件,就可以很好实现硬件仿真,效果如同JTAG,却不需要花费较多的门电路去实现JTAG

chunjiu 发表于 2021-3-31 13:45:58

oldban 发表于 2021-3-31 13:35
对于51芯片厂家,我设想过一个方案,只需增加少量逻辑门,配合预先烧录的固件,就可以很好实现硬件仿真,效 ...

我估计你不了解情况 ... 例如抄板后进行小改动 和 重新设计方案进行原理上的大改动是两码事情{:titter:}

oldban 发表于 2021-3-31 13:58:03

chunjiu 发表于 2021-3-31 13:45
我估计你不了解情况 ... 例如抄板后进行小改动 和 重新设计方案进行原理上的大改动是两码事情{:titter: ...

是你冇意会到我所设想的仿真原理,JTAG是纯硬件实现,我设想是软硬配合,对外就一个接口,比如STC出厂前就会预烧录串口下载固件,差不多的原理

oldban 发表于 2021-3-31 14:04:12

STC的仿真功能就是预烧录固件实现的,会占用少些资源,不够理想,其实对于单片机设计师来说是可以添加少许辅助硬件来实现比较理想的仿真功能的

chunjiu 发表于 2021-3-31 14:11:01

oldban 发表于 2021-3-31 13:58
是你冇意会到我所设想的仿真原理,JTAG是纯硬件实现,我设想是软硬配合,对外就一个接口,比如STC出厂前 ...

我应该没想错 , 因为你的小改动毕竟是从原理上改变了芯片生产制作和测试的原过程 ,这从 MCU 芯片生产商的角度来说是另一个完全不同的设计 , 所以跨度真的太大了.

它不仅仅是一个功能上的小改动 , 还涉及到烧录和 QC , QA 测试验证等一系列的附加工作流程 , 从芯片的生产成本来说 , 耗费是巨大的.

chunjiu 发表于 2021-3-31 14:18:52

oldban 发表于 2021-3-31 14:04
STC的仿真功能就是预烧录固件实现的,会占用少些资源,不够理想,其实对于单片机设计师来说是可以添加少许 ...

从 LCD 屏的切割上来比喻 , 任何稀奇古怪的形状和大小都能给你整出来 , 这并不是为了符合用户实际需求 , 而是要从最小最少的废料的成本角度考虑的 .

就是说一块完整的玻璃基材 , 如何切割出最多可用数量的屏幕才是首选 . 而一块晶圆如何切割出最多数量的成品芯片才是 IC 生产厂家关心的.

你的方案通常来说应该是第三方厂家来补充的 , 也就是所谓的附加增值 , 所以 MCU 的生产厂家大概率不会关心这些事情 .

oldban 发表于 2021-3-31 14:39:04

感觉鸡同鸭讲,算是我发错地方,抬杠抬上瘾了

chunjiu 发表于 2021-3-31 14:43:30

oldban 发表于 2021-3-31 14:39
感觉鸡同鸭讲,算是我发错地方,抬杠抬上瘾了

兄弟抱歉哈 , 可能我们看东西的角度不一样 , 所以想的事情和探讨的不是同一码事情 .
页: [1]
查看完整版本: 将 B52 ( BigSam - 8052 ) 第一次尝试移植到 STM32F429ZI 上