zevorn 发表于 2022-12-23 17:02:19

一个有意思的提案,将sfr寄存器地址空间映射到xdata区

早期我写MCS51-ELL库的时候,曾经参考过STM32的HAL库和LL库,后来深入学习ARM架构以后,发现与MCS51架构还是有很大差异的。

库地址如下:MCS51-ELL: 这是一个专门为增强型1T8051内核MCU设计的硬件抽象平台。 (gitee.com)

从编写驱动库的角度来说,如果可以把sfr映射到xdata区,软件层面,就可以通过指针来间接寻址,对数据进行操作。这样写驱动库会变得简洁很多。

对IO操作,可以直接访问sfr寄存器,如果是初始化阶段,可以通过xdata映射sfr区,来操作。

其实软件上,也可以实现这个操作,但是性价比不高。

有没有大佬来讨论一下,这个方案的可行性,还有硬件层这么做的可行性。

神农鼎 发表于 2022-12-23 17:39:08

如果可以把sfr映射到xdata区======STC8H/STC8G 已有大量的扩展 XSFR/XFR 硬件放在 xdata 区

sakihata 发表于 2022-12-23 18:07:00

应该是类似与IAP的设计吧?就是说在SFR里设计寄存器间接操作xram?

神农鼎 发表于 2022-12-23 19:16:00


神农鼎 发表于 2022-12-23 19:18:25


zevorn 发表于 2022-12-24 17:43:11

神农鼎 发表于 2022-12-23 19:16

是的,我之前写这些外设的驱动的时候,如果他的寄存器有部分在xdata区,那么我就可以通过指针来间接操作,非常方便。

但是sfr区的寄存器,由于仅仅支持直接寻址,所以编写库就麻烦的多,最简单的例子,就是IO。

可以看官方的驱动库,对于IO操作的接口,里面的实现,要繁琐的多,因为不支持间接寻址。

神农鼎 发表于 2022-12-24 17:59:48

后续8051是32位8051,STC32G12K128, STC32G8K64的 时代,库在 STC32上会大显身手,
STC8H系列是8位8051的代表,寄存器配置入门CPU运行原理到应用精通为主,照顾8051老用户
===库在8位8051这,作用不大,现在STC在大力推 DMA, 这是个好东西,简化程序设计
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=376&extra=page%3D1
https://www.stcaimcu.com/data/attachment/forum/202212/17/135333kfiihushpp5pu5hh.png

梁工 发表于 2022-12-25 09:41:41

STC扩展的很多外设,就大量用了放置在xdata区间的特殊功能寄存器,比如DMA、PWM、IO设置、LCD驱动、LED驱动、LCM驱动等等。

LAOXU 发表于 2023-1-16 10:08:12

zevorn 发表于 2022-12-24 17:43
是的,我之前写这些外设的驱动的时候,如果他的寄存器有部分在xdata区,那么我就可以通过指针来间接操作, ...

51的 DPTR单指针对 外部 XDATA寻址, 功能很弱, 代码消耗大, 后来改进的双数据指针, 也是个鸡肋, 要很小心的使用, 否则极易出错.

51是早期构架, 你硬要把晚期的先进构架 ARM的那一套, 用在 51上, 代码长度大大增加, 执行效率极速降低.

理论上部分能实现, 但现实中走不通. 这是由 51的构架决定的, 早期的数据处理量相对少, 51主要依靠 片内RAM来处理, 片外 XRAM 仅作数据缓冲及数据保存.

像 BIT位操作(含I/O操作), 是世界上仅存的, 也是 51最强大最亮眼的地方, 你把她去掉, 用其他没有位处理器的CPU(比如 ARM) 风格取代, 代码增加好多不说,

执行效率低很多. 那还不如直接把 51扔到历史的长河里去算了.

因为 51的构架, 决定的片外 XRAM操作, 比不上同等级别的 8080(Z80)系, 6800(6502)系, 指令系统除了 位处理器是亮点, 其他没什么优势, 那还要她干嘛?

后来 英特尔升级的 251, 这方便作了很大的改进, 这构架在当时也算 先进的, 放在现在 和 后期的 ARM相比, 当然没法比, 像 ARM的 桶式处理, 移位和加法,

一条指令打天下, 而 251要好多条指令, 才能模拟此功能.

至于官方仿 ARM风格的库, 大量使用指针间接操作, 代码长度长执行效率低, 正如官方自已存认的, 作用不大.

但官方仿 ARM风格的库, 用在 251(STC32)上, 用户体验就在不一样了, 251的间接寻址功能, 比原 51要强大的多了, 无论代码长度长执行效率,

都逼近直接用 汇编编写的代码, 我相信, 喜欢使用的客户也会多起来.

LAOXU 发表于 2023-1-16 10:17:58

玩 硬件抽像平台, 8位机中, AVR, STM8, PIC18 都行, 唯 51不太合适(这和外围扩展功能模块无关, 主要是51的指令系统太弱)

楼主想玩, 推荐在 251(STC32)上实现硬件抽像平台.
页: [1]
查看完整版本: 一个有意思的提案,将sfr寄存器地址空间映射到xdata区